UItextfield limit chinese word

#import"ViewController.h"

#import"NSString+category.h"

@interfaceViewController ()

@property(strong,nonatomic)UITextField* textfield;

@end

#define kMaxNumber15

@implementationViewController

- (UITextField*)textfield{

if(!_textfield)

{

_textfield= [[UITextFieldalloc]initWithFrame:CGRectMake(10,100,200,40)];

_textfield.delegate=self;

_textfield.placeholder=@"请输入";

_textfield.returnKeyType=UIReturnKeyDone;

[[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(textFiledDidChange:)

name:@"UITextFieldTextDidChangeNotification"

object:_textfield];

}

return_textfield;

}

- (void)viewDidLoad {

[superviewDidLoad];

self.view.backgroundColor= [UIColorgrayColor];

[self.viewaddSubview:self.textfield];

}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string

{

NSLog(@"打印信息:%lu-----%lu ",(unsignedlong)range.location,(unsignedlong)range.length);

NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];

if(toBeString.length > kMaxNumber && range.length!=1){

textField.text = [toBeString substringToIndex:kMaxNumber];

returnNO;

}

returnYES;

}

- (void)textFiledDidChange:(NSNotification*)sender

{

UITextField *textField = (UITextField *)sender.object;

NSString *toBeString = textField.text;

NSString *lang = [[textField textInputMode] primaryLanguage];//键盘输入模式

if([lang isEqualToString:@"zh-Hans"]) {//简体中文输入,包括简体拼音,健体五笔,简体手写

UITextRange *selectedRange = [textField markedTextRange];

//获取高亮部分

UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];

//没有高亮选择的字,则对已输入的文字进行字数统计和限制

if(!position) {

if(toBeString.length > kMaxNumber) {

textField.text = [toBeString substringToIndex:kMaxNumber];

}

}

//有高亮选择的字符串,则暂不对文字进行统计和限制

else{

}

}

//中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

else{

if(toBeString.length > kMaxNumber) {

textField.text = [toBeString substringToIndex:kMaxNumber];

}

}

}

//- (int)convertToInt:(NSString*)strtemp

//{

//int strlength = 0;

//char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];

//for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++) {

//if (*p) {

//p++;

//strlength++;

//}

//else {

//p++;

//}

//

//}

//return strlength;

//}

#pragma mark - UITextFieldDelegate

- (BOOL)textFieldShouldReturn:(UITextField*)textField {

[textFieldresignFirstResponder];

returnYES;

}

-(void)dealloc{

[[NSNotificationCenter defaultCenter]removeObserver:self

name:@"UITextFieldTextDidChangeNotification"

object:self.textfield];

}

- (void)didReceiveMemoryWarning {

[superdidReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务