IOS-如何干掉UITextField的长按手势菜单与输入内容限制

今天项目用到了这个就写一下,方便以后同学不会的时候可以直接使用

首先要重写UITextFiled子类  在初始化方法下面 copy 下面方法 就禁止了长按出现的菜单

//干掉textField
的长按菜单 禁止copy paste

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender

{

if ([UIMenuController
sharedMenuController]) {

[UIMenuController
sharedMenuController].menuVisible =
NO;

}

return
NO;

}

在开发中我们有时候会对UITextFiled 进行一些操作,说一下如何只输入中文,或者 只输入 数字 和英文 2中方法

我直接用宏定义定义:

#define kAlphaNum @"abcdefghijklmnopqrstuvwxyz" //这种是对应只输入中文 不允许其他数字或者符号的

#define kEnglishNum  @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" //这种是对应只能输入数字和英文的方法

执行UITextField 的delegate 方法 切记 textFiled.delegate = self;

下面直接上代码:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string

{

UITextField *nameField = (UITextField *)[self
viewWithTag:200];

UITextField *cardField = (UITextField *)[self
viewWithTag:201];

if (textField == nameField) {

//只允许输入中文

NSCharacterSet *cs;

cs = [[NSCharacterSet
characterSetWithCharactersInString:kAlphaNum]
invertedSet];

NSString *filtered = [[string
componentsSeparatedByCharactersInSet:cs]
componentsJoinedByString:@""];

BOOL basic = [string
isEqualToString:filtered];

NSString *text = [textField.text
stringByReplacingCharactersInRange:range
withString:string];

if (_delegate && [_delegate
respondsToSelector:@selector(passName:)]) {

[_delegate
passName:text];

}

return basic;

}

if (textField == cardField) {

//只允许输入英文和数字

NSCharacterSet *cs;

cs = [[NSCharacterSet
characterSetWithCharactersInString:kEnglishNum]
invertedSet];

NSString *filtered = [[string
componentsSeparatedByCharactersInSet:cs]
componentsJoinedByString:@""];

BOOL basic = [string
isEqualToString:filtered];

NSString *text = [textField.text
stringByReplacingCharactersInRange:range
withString:string];

if (_delegate && [_delegate
respondsToSelector:@selector(passCard:)]) {

[_delegate
passCard:text];

}

return basic;

}

return
YES;

}

时间: 2024-10-11 03:58:26

IOS-如何干掉UITextField的长按手势菜单与输入内容限制的相关文章

ios开发-给cell添加长按手势

业务需要给cell添加一个长按手势 //需要在这个方法里添加 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ //添加长按手势 UILongPressGestureRecognizer * longPressGesture =[[UILongPressGestureRecognizer alloc]initWithTarget:self a

iOS长按手势调用两次解决方法

由于以前没有很细致的研究过长按手势,所以今天使用的时候发现长按手势会调用两次响应事件. 主要原因是长按手势会分别在UIGestureRecognizerStateBegan和UIGestureRecognizerStateEnded状态时调用响应函数 这时就需要在响应事件中增加手势状态的判断,根据具体的应用情况在相应的状态中执行操作. typedefNS_ENUM(NSInteger, UIGestureRecognizerState) { UIGestureRecognizerStatePos

ios 实现在tableViewCell上面添加长按手势 删除该条cell以及列表后台数据等

自己的代码  需要   把属性更改成自己要使用的 //创建长按手势 在cellForRowAtIndexPath代理方法中 UILongPressGestureRecognizer *longPressGR = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(lpGR:)]; //设定最小的长按时间 按不够这个时间不响应手势 longPressGR.minimumPressDuration = 1

IOS给tableview的cell添加长按手势执行两次(UILongPressGestureRecognizer)

这里我们为tableview添加长按手势 UILongPressGestureRecognizer *longPressGr = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)]; longPressGr.minimumPressDuration = 0.5f; longPressGr.numberOfTouchesRequired = 1; [_tableV

手势操作(单击手势,长按手势,策划手势)

1.策划手势操作 // // ViewController.m // 1-28策划手势 // // Created by ma c on 16/1/28. // Copyright © 2016年 bjsxt. All rights reserved. // #import "ViewController.h" @interface ViewController () @property (strong, nonatomic) UISwipeGestureRecognizer *rec

iOS开发——项目总结OC篇&iOS 长按事件菜单的实现(剪切版)

iOS 长按事件菜单的实现(剪切版) 一:简单实现菜单 添加长按手势 [self.label addGestureRecognizer:[[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(labelClick)]]; 实现手势方法 1 - (void)labelClick 2 { 3 // 获得菜单 4 UIMenuController *menu = [UIMenuController share

UITableView 长按手势

目录: 你需要什么? 如何做? 如何将其利用至UICollectionView上? 何去何从? 本次的 cookbook-style 教程中介绍如何通过长按手势来移动 table view中的cell,这种操作方式就像苹果自家的天气 App 一样. 你可以直接把本文中的到吗添加到你的工程中,或者将其添加到我为你创建好的 starter project 中,也可以下载本文的完整示例工程. 你需要什么? UILongGestureRecognizer UITableView (可以用 UIColle

给button添加长按手势并侦测到此button

1, 添加手势 self.longPressRecognizer = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongPress:)];[btn addGestureRecognizer:self.longPressRecognizer]; 2,得到当前执行长点选的button - (void)handleLongPress:(UILongPressGestureRecogni

IOS 开发更改UITextField的Placeholder颜色

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 200, 200, 40)];    UIColor *color = [UIColor redColor]; textField.backgroundColor = [UIColor yellowColor]; textField.attributedPlaceholder = [[NSAttributedString alloc] initW