4.須要全選制手機聯繫人(iOS11有坑)bash
self.middleTextField.keyboardType = UIKeyboardTypeNumberPad;複製代碼
- (BOOL)checkTelNumber:(NSString *)num {
if (num.length <= 0) {
return NO;
}
NSString *regexStr = @"^((1[0-9]))\\d{9}$";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexStr];
BOOL isMatch = [pred evaluateWithObject:num];
return isMatch;
}複製代碼
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
UIToolbar * toobar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 38.0f)];
toobar.translucent = YES; toobar.barStyle = UIBarStyleDefault;
UIBarButtonItem * spaceBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem * doneBarButtonItem = [[UIBarButtonItem alloc] init];
UIButton * saveBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 60, 38)];;
[saveBtn setTitle:@"完成" forState:UIControlStateNormal];
[saveBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[saveBtn addTarget:self action:@selector(resignKeyboard) forControlEvents:UIControlEventTouchUpInside];
doneBarButtonItem.customView = saveBtn;
[toobar setItems:@[spaceBarButtonItem,doneBarButtonItem]];
if (self.keyboardType == UIKeyboardTypeNumberPad) {
self.inputAccessoryView = toobar;
}else{
self.inputAccessoryView = nil;
}
}
複製代碼
用戶得本身刪除之間的空格,在iOS11後,系統在複製時加入了些亂碼類的東西,即便用戶刪除能看到的空格,仍是有問題。ide
字符串長度13.本地手機號校驗確定過不了,服務端校驗也不會過。解決方案爲:將字符串中的數字所有提出來重組ui
[self.middleTextField addTarget:self action:@selector(middleTextFieldTextChange:) forControlEvents:UIControlEventEditingChanged];
- (void)middleTextFieldTextChange:(UITextField *)textField{
NSString *pureNumbers = [[textField.text componentsSeparatedByCharactersInSet:[[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet]] componentsJoinedByString:@""];
if (pureNumbers && [pureNumbers length] >= 11) {
textField.text = pureNumbers;
}
}複製代碼