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

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

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

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

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

    UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;

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

    [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];
            }
        }
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容