要限制一個(gè)UITextField/UITextView的輸入字?jǐn)?shù)八堡,首先想到的應(yīng)該是通過UITextFieldDelegate/UITextViewDelegate
的代理方法來限制顿仇,那么如何來更好的限制輸入字?jǐn)?shù)呢,下面我們來看看:
TextView。幸運(yùn)的是,當(dāng)我們點(diǎn)進(jìn)去UITextView.h頭文件里時(shí),會(huì)發(fā)現(xiàn)- (void)textViewDidChange:(UITextView *)textView;這個(gè)代理方法逸嘀,我們只需要在這個(gè)方法里實(shí)現(xiàn)字?jǐn)?shù)限制就好
- (void)textViewDidChange:(UITextField *)textView
{
if (textView == self.textView) {
if (textView.text.length > 20) {
textView.text = [textView.text substringToIndex:20];
}
}
}
TextField。Textfield就沒有那么幸運(yùn)了允粤,當(dāng)我們點(diǎn)進(jìn)去UITextField.h頭文件的時(shí)候崭倘,怎么也找不到- (void)textFieldDidChange:(UITextField *)textField方法,就在我們尋覓上述回調(diào)方法而不得時(shí)类垫,可能會(huì)發(fā)現(xiàn)最下面有這么個(gè)消息通知名稱:
UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;
不過绳姨,監(jiān)聽消息還要記得解除監(jiān)聽,通常我還習(xí)慣把監(jiān)聽消息的代碼統(tǒng)一放在一個(gè)方法中阔挠,看起來有點(diǎn)“大動(dòng)干戈”飘庄。
所幸的是UITextField本身提供了相應(yīng)的事件監(jiān)聽:
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
這樣就可以更好地限制輸入長(zhǎng)度:
- (void)textFieldDidChange:(UITextField *)textField
{
if (textField == self.titleField) {
if (textField.text.length > 20) {
textField.text = [textField.text substringToIndex:20];
}
}
}