對字元串的長度限制,實作如下:
#define kMaxLength 20
- ( BOOL) textField:( UITextField *) textField shouldChangeCharactersInRange:( NSRange) range replacementString:( NSString *) string {
NSString * toBeString = [ textField . text stringByReplacingCharactersInRange: range withString: string ];
if ( toBeString . length > kMaxLength && range . length != 1 ){
textField . text = [ toBeString substringToIndex: kMaxLength ];
return NO;
}
return YES; } 對漢字進行限制輸入長度 #define kMaxLength 20
<1>在init時候注冊notification: [[ NSNotificationCenter defaultCenter ] addObserver: self selector: @selector( textFiledEditChanged:)
name: @"UITextFieldTextDidChangeNotification"
object: myTextField ];
<2>實作監聽方法: -( void) textFiledEditChanged:( NSNotification *) obj {
UITextField * textField = ( UITextField *) obj . object;
NSString * toBeString = textField . text;
NSString * lang = [[ UITextInputMode currentInputMode ] primaryLanguage ]; // 鍵盤輸入模式
if ([ lang isEqualToString: @"zh-Hans" ]) { // 簡體中文輸入,包括簡體拼音,健體五筆,簡體手寫
UITextRange * selectedRange = [ textField markedTextRange ];
//擷取高亮部分
UITextPosition * position = [ textField positionFromPosition: selectedRange . start offset: 0 ];
// 沒有高亮選擇的字,則對已輸入的文字進行字數統計和限制
if ( ! position) {
if ( toBeString . length > kMaxLength) {
textField . text = [ toBeString substringToIndex: kMaxLength ];
}
}
// 有高亮選擇的字元串,則暫不對文字進行統計和限制
else {
}
}
// 中文輸入法以外的直接對其統計限制即可,不考慮其他語種情況
else {
if ( toBeString . length > kMaxLength) {
textField . text = [ toBeString substringToIndex: kMaxLength ];
}
}
}
<3>在dealloc裡登出掉監聽方法,切記! -( void) dealloc {
[[ NSNotificationCenter defaultCenter ] removeObserver: self
name: @"UITextFieldTextDidChangeNotification"
object: _albumNameTextField ];
}