uitextfield limit chinese word count

#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=@"請(qǐng)輸入";

_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];//鍵盤(pán)輸入模式

if([lang isEqualToString:@"zh-Hans"]) {//簡(jiǎn)體中文輸入,包括簡(jiǎn)體拼音,健體五筆,簡(jiǎn)體手寫(xiě)

UITextRange *selectedRange = [textField markedTextRange];

//獲取高亮部分

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

//沒(méi)有高亮選擇的字,則對(duì)已輸入的文字進(jìn)行字?jǐn)?shù)統(tǒng)計(jì)和限制

if(!position) {

if(toBeString.length > kMaxNumber) {

textField.text = [toBeString substringToIndex:kMaxNumber];

}

}

//有高亮選擇的字符串,則暫不對(duì)文字進(jìn)行統(tǒng)計(jì)和限制

else{

}

}

//中文輸入法以外的直接對(duì)其統(tǒng)計(jì)限制即可,不考慮其他語(yǔ)種情況

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容