如何更好地限制一個UITextField的輸入長度http://www.reibang.com/p/7a69f15c0268
/**
* 關(guān)閉鍵盤
*/
- (void)closeKeyboard;
#pragma mark - 關(guān)閉鍵盤
- (void)closeKeyboard {
//添加手勢關(guān)閉鍵盤
UITapGestureRecognizer * gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeKeyboard:)];
gesture.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:gesture];
}
- (void)closeKeyboard:(UITapGestureRecognizer*)sender {
[self.view endEditing:YES];
}
[_phoneText addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
[_phoneText addTarget:self action:@selector(textFieldEditingDidEnd:) forControlEvents:UIControlEventEditingDidEnd];
#pragma mark - UITextFieldDelegate 輸入只能是數(shù)字
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
return [ToolsClassManager validateNumber:string];
}
#pragma mark - UIControlEventEditingChanged 限制長度
-(void)textFieldDidChange:(UITextField *)textField{
if (textField == self.phoneText) {
if (textField.text.length > 11) {
textField.text = [textField.text substringToIndex:11];
}
}
}
#pragma mark - UIControlEventEditingDidEnd 正則判斷手機號碼地址格式
- (void)textFieldEditingDidEnd:(UITextField *)textField {
if (![ToolsClassManager isMobileNumber:textField.text]) {
[ZCLUtilities showMessageHud:@"請輸入正確的手機號" duration:1.0];
}
}
@implementation ToolsClassManager
/**
* 輸入只能是數(shù)字
*/
+ (BOOL)validateNumber:(NSString*)number;
/**
* 正則判斷手機號碼地址格式
*/
+ (BOOL)isMobileNumber:(NSString *)mobileNum;
#pragma mark - 正則判斷手機號碼地址格式
+ (BOOL)isMobileNumber:(NSString *)mobileNum {
// 電信號段:133/153/180/181/189/177
// 聯(lián)通號段:130/131/132/155/156/185/186/145/176
// 移動號段:134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178
// 虛擬運營商:170
NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[06-8])\\d{8}$";
NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
return [regextestmobile evaluateWithObject:mobileNum];
}
#pragma mark - 輸入只能是數(shù)字
+ (BOOL)validateNumber:(NSString*)number {
BOOL res = YES;
NSCharacterSet* tmpSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
int i = 0;
while (i < number.length) {
NSString * string = [number substringWithRange:NSMakeRange(i, 1)];
NSRange range = [string rangeOfCharacterFromSet:tmpSet];
if (range.length == 0) {
res = NO;
break;
}
i++;
}
return res;
}