UITextFieldDelegate协议

Posted 张玉宝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UITextFieldDelegate协议相关的知识,希望对你有一定的参考价值。

 

很多人都认为UITextField很简单,为什么会写这个协议呢?

因为在实际开发中可能会用到;

 

比如要做到下图的效果:

文本框下面的下划线的颜色要随着输入的状态变化;

点击对应的文本框,其下面的线条变为绿色,结束编辑,变为灰色;

要熟悉UITextFieldDelegate协议才能做到这一点;

首先,先看一下官方的说明:

复制代码
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;        // return NO to disallow editing.
- (void)textFieldDidBeginEditing:(UITextField *)textField;           // became first responder
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;          // return YES to allow editing to stop and to resign first responder status. NO to disallow the editing session to end
- (void)textFieldDidEndEditing:(UITextField *)textField;             // may be called if forced even if shouldEndEditing returns NO (e.g. view removed from window) or endEditing:YES called

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;   // return NO to not change text

- (BOOL)textFieldShouldClear:(UITextField *)textField;               // called when clear button pressed. return NO to ignore (no notifications)
- (BOOL)textFieldShouldReturn:(UITextField *)textField;              // called when \'return\' key pressed. return NO to ignore.
复制代码

 

1、

- (void)textFieldDidBeginEditing:(UITextField *)textField;

文本框已经开始编辑

2、

- (void)textFieldDidEndEditing:(UITextField *)textField; 

文本框已经结束编辑

 

3、其他设置是否允许的输入控制

复制代码
1、- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;        // return NO to disallow editing.
//控制是否允许输入,返回值是NO的时候,禁止输入;

2、- (BOOL)textFieldShouldEndEditing:(UITextField *)textField; // return YES to allow editing to stop and to resign first responder status. NO to disallow the editing session to end //是否结束输入,返回值是YES时候,允许停止输入,并且释放第一响应;返回NO的时候,则相反; 3、- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not change text
//是否改变输入文本,返回NO的时候,不保存修改
4、- (BOOL)textFieldShouldClear:(UITextField *)textField; // called when clear button pressed. return NO to ignore (no notifications)
//当清空按钮时候调用,返回是NO的时候,忽视清空
5、- (BOOL)textFieldShouldReturn:(UITextField *)textField; // called when \'return\' key pressed. return NO to ignore.
   //当点击return按钮时候调用该方法,返回是NO的时候,不做任何响应;

复制代码

 

以上是关于UITextFieldDelegate协议的主要内容,如果未能解决你的问题,请参考以下文章

当我遵守协议时,关于分配给 id<UITextFieldDelegate> 的警告

IOS 键盘协议之中的一个 &lt;UITextFieldDelegate&gt;

UITextFieldDelegate 崩溃 (exc_bad_access)

我正在寻找 UITextFieldDelegate 示例代码 [关闭]

UITextFieldDelegate 的 textField 方法没有被调用

UIView 的一个类也可以是 UITextFieldDelegate 吗?