UITextField常用的代理事件

因为在项目中经常会有点击文本框弹出选择框 或者文本框中有数据就清空文本框等之类的场景这时就要用到UITextField的代理事件

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
  [textField resignFirstResponder]
   return YES;
}
这个方法返回NO的话文本框就会禁止编辑 可以在这个方法了写点击跳转页面之类的事件 键盘收起等事件

UITextField一键清除需设置clearButtonMode就可以了
在这里插入图片描述

clearButtonMode的三个属性:
UITextFieldViewModeNever,  清空按钮永不出现
UITextFieldViewModeUnlessEditing,  不编辑的时候出现
UITextFieldViewModeAlways 只要输入框有内容就出现

textField.clearButtonMode=UITextFieldViewModeAlways; 

//这个是点击清除按钮时调用的方法返回YES 清除返回NO不清除
- (BOOL)textFieldShouldClear:(UITextField *)textField{
    return YES;
}
//这个属性设置后会在文本框在次编辑是清空
textField.clearsOnBeginEditing=YES;
//当textField设置了secureTextEntry属性后clearsOnBeginEditing这个属性会失效要想保留原来的效果可以使用一下代理方法
-(void)textFieldDidBeginEditing:(UITextField *)textField{
//文本框开始编辑时调用
    _countInput.text=nil;
}
//文本框结束编辑时调用
-(void)textFieldDidEndEditing:(UITextField *)textField{

}

//返回YES允许编辑停止并放弃第一响应者状态。NO允许结束编辑会话
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
return YES;
}

实时的获取文本框输入的值

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    NSString *text = [textField.text stringByReplacingCharactersInRange:range withString:string];
    NSLog(@"文本框实时内容%@",text);
    return YES;
}
//当返回是YES时键盘输入123 择打印出来 1,12,123 返回是NO时 打印出 1,2,3

对于这种方法 我看到有人说在iOS7上中文输入获取到的拼音 我用到是iPad 系统是NSString* phoneVersion = [[UIDevice currentDevice] systemVersion]; NSLog(@“手机系统版本: %@”, phoneVersion);
在这里插入图片描述
没有出现这种情况 暂时不知道原因 如果出现这种情况 可以使用一下方法

//给textField添加事件或者通知都一样 结果都一样
[textField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];
//输入中文的话这个方法会调用两次用一下方式解决
 - (void)textFieldChanged:(UITextField *)textField {
     UITextRange *selectedRange = textField.markedTextRange;
     if (selectedRange == nil || selectedRange.empty) {
           NSLog(@"文本框实时内容%@", textField.text);

    }
 }  
//使用通知在在viewDidLoad初始化通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldChanged:) name:UITextFieldTextDidChangeNotification object:self.textField];

文本框禁止编辑

//设置textField.enable = NO,属性或者
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
   return NO;
}

点击键盘换行时调用

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
//返回NO就表示不处理
   return YES;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值