對textfield的代理方法做一總結:
第一繼承自UIControl
添加事件
[textField addTarget : self action : @selector (didDone:) forControlEvents :UIControlEventEditingDidEndOnExit ];
觸發方法的事件是個枚舉值,可以自己研究。首先是判斷是否開始編輯,返回值是YES則可編輯,NO則不能編輯。
//進入編輯狀態的檢查,返回值爲NO則無法編輯
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
NSLog(@"應該開始編輯?--%s",__FUNCTION__);
return YES;
}
進入編輯狀態時,經過此方法:
//進入編輯狀態
-(void)textFieldDidBeginEditing:(UITextField *)textField{
NSLog(@"開始編輯--%s",__FUNCTION__);
}
每次輸入,就走一次這個方法:
//問委託指定的文本是否應該被改變。是的如果指定的文本範圍應該更換,否則,沒有保持舊的文本。
/**
* 審查每次輸入的內容
*
* @param textField 第一響應的文本框
* @param range 傳進來的長度始終爲0
* @param string 每次輸入的內容
*
* @return yes:顯示 no:不顯示
*/
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
// NSLog(@"檢測輸入--%s",__FUNCTION__);
/*range = NSMakeRange(0, 5);
if ([textField.text length] > 5) {
string = [textField.text substringWithRange:range];
}*/
/*NSLog(@"%@",textField);
NSLog(@"range--%lu",range.length);
NSLog(@"string--%@",string);*/
return YES;
}
其中的代碼是一些調試代碼,用來查看參數是什麼,以及什麼時候執行內容
判斷是否結束輸入,返回值爲YES則可以結束,否則不能結束:
//是否結束編輯
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
NSLog(@"是否結束編輯--%s",__FUNCTION__);
return YES;
}
已經結束編輯是進入此方法:
//結束編輯
-(void)textFieldDidEndEditing:(UITextField *)textField{
NSLog(@"結束編輯--%s",__FUNCTION__);
}
按回車鍵時進入此方法:
//回車鍵
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
NSLog(@"回車鍵按下--%s",__FUNCTION__);
BOOL temp = [textField resignFirstResponder];
NSLog(@"%d",temp);
return YES;
}
按清除鍵進入?
//問委託如果文本字段的當前內容應該刪除。
-(BOOL)textFieldShouldClear:(UITextField *)textField{
NSLog(@"是否清除--%s",__FUNCTION__);
return NO;
}
這個我嘗試了按回退鍵,應該是清除鍵,但是不起作用,改變返回值也沒有什麼效果,還請大神指點,這個方法到底是幹什麼的?