限制UITextField 輸入文字的長度
監聽textField文字變化的事件
1、實現UITextFieldDelegate協議;
2、實現textField:shouldChangeCharactersInRange:replacementString:方法;
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ int pMaxLength = 11; NSInteger strLength = textField.text.length - range.length + string.length; //輸入內容的長度 - textfield區域字元長度(一般=輸入字元長度)+替換的字元長度(一般為0) return (strLength <= pMaxLength); }
如上程式碼,如果我們簡單的這樣寫: if(range.location<=11) return 或是 if (textfield.text.length>=11) 這樣雖然也能限制位數為11位,但是如果通過放大鏡把游標切換到之前的位數後,你照樣可以輸入,並且還會導致輸入11位後,鍵盤上的退格(X鍵)無法使用,原因是:我們在location到達11位後,返回了NO,鍵盤無法相應:新增,修改,刪除。這是很嚴重的。所以照著我上面的。
方法解讀:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
功能:
把textField中位置為range的字串替換為string字串;
此函式在textField內容被修改時呼叫;
返回值:
YES,表示修改生效;NO,表示不做修改,textField的內容不變。
引數說明:
textField:響應UITextFieldDelegate協議的UITextField控制元件。
range: UITextField控制元件中游標選中的字串,即被替換的字串;
range.length為0時,表示在位置range.location插入string。
string: 替換字串; string.length為0時,表示刪除。