对字符串的长度限制,实现如下:
#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;
- ( 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 ];
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 ];
}
}
}
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 ];
}
[[ NSNotificationCenter defaultCenter ] removeObserver: self
name: @"UITextFieldTextDidChangeNotification"
object: _albumNameTextField ];
}