如何更好的限制一個UITextField/UITextView的輸入字數

要限制一個UITextField/UITextView的輸入字數,首先想到的應該是通過UITextFieldDelegate/UITextViewDelegate
的代理方法來限制,那么如何來更好的限制輸入字數呢,下面我們來看看:

TextView。幸運的是,當我們點進去UITextView.h頭文件里時,會發現- (void)textViewDidChange:(UITextView *)textView;這個代理方法,我們只需要在這個方法里實現字數限制就好

    - (void)textViewDidChange:(UITextField *)textView
    {
        if (textView == self.textView) {
            if (textView.text.length > 20) {
                textView.text = [textView.text substringToIndex:20];
            }
        }
    }

TextField。Textfield就沒有那么幸運了,當我們點進去UITextField.h頭文件的時候,怎么也找不到- (void)textFieldDidChange:(UITextField *)textField方法,就在我們尋覓上述回調方法而不得時,可能會發現最下面有這么個消息通知名稱:

    UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;

不過,監聽消息還要記得解除監聽,通常我還習慣把監聽消息的代碼統一放在一個方法中,看起來有點“大動干戈”。
所幸的是UITextField本身提供了相應的事件監聽:

    [textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];

這樣就可以更好地限制輸入長度:

    - (void)textFieldDidChange:(UITextField *)textField
    {
        if (textField == self.titleField) {
            if (textField.text.length > 20) {
                textField.text = [textField.text substringToIndex:20];
            }
        }
    }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容