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

按回車鍵時進入此方法:

//回車鍵
-(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;
}

這個我嘗試了按回退鍵,應該是清除鍵,但是不起作用,改變返回值也沒有什麼效果,還請大神指點,這個方法到底是幹什麼的?
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章