iOS開発UItextFielddialingメソッドの詳細


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__);
}

Enterキーを押すと、次のようになります.
//   
-(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;
}

これは私がリターンキーを押してみましたが、クリアキーのはずですが、役に立たず、リターン値を変えても効果がありません.この方法はいったい何をしているのでしょうか.