目前的App纤泵,除了第三方登錄外骆姐,常用的登錄方式就是手機(jī)號(hào)和郵箱帳號(hào)登錄。
至于帳號(hào)的注冊(cè)捏题,驗(yàn)證碼的發(fā)送玻褪,都是返回給后臺(tái)之后由后臺(tái)來(lái)完成的,這里不做說(shuō)明公荧。
文章的最后還會(huì)對(duì)文本框的輸入判斷進(jìn)行一些說(shuō)明带射,配合使用。
手機(jī)號(hào)判斷
if (mobile.length == 11) {
// 移動(dòng)號(hào)段正則表達(dá)式
NSString * CM_NUM = @"^((13[4-9])|(147)|(15[0-2,7-9])|(178)|(18[2-4,7-8]))\\d{8}|(1705)\\d{7}$";
// 聯(lián)通號(hào)段正則表達(dá)式
NSString * CU_NUM = @"^((13[0-2])|(145)|(15[5-6])|(176)|(18[5,6]))\\d{8}|(1709)\\d{7}$";
// 電信號(hào)段正則表達(dá)式
NSString * CT_NUM = @"^((133)|(153)|(177)|(18[0,1,9]))\\d{8}$";
NSPredicate *pred1 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CM_NUM];
BOOL isMatch1 = [pred1 evaluateWithObject:mobile];
NSPredicate *pred2 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CU_NUM];
BOOL isMatch2 = [pred2 evaluateWithObject:mobile];
NSPredicate *pred3 = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", CT_NUM];
BOOL isMatch3 = [pred3 evaluateWithObject:mobile];
if (isMatch1 || isMatch2 || isMatch3) {
isPhone = YES;
} else {
[LDCreateUITool showMaskOfTitle:@"請(qǐng)輸入正確的手機(jī)號(hào)/郵箱"];
}
}else{
}
郵箱判斷
if ([mobile containsString:@"@"]) {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
BOOL isEmail = [emailTest evaluateWithObject:mobile];
if (isEmail) {
isEmail = YES;
} else {
isEmail = NO;
}
}
由于是同一個(gè)文本框去判斷的循狰,所以才用有沒(méi)有"@"
來(lái)區(qū)分郵箱和手機(jī)號(hào)窟社。
這里還要做一些說(shuō)明,那就是關(guān)于文本框的輸入判斷绪钥。
一般來(lái)說(shuō)灿里,為了用戶體驗(yàn)我們都是調(diào)用文本框的代理方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
來(lái)進(jìn)行實(shí)時(shí)的監(jiān)控,或者用
-(void)textFieldDidEndEditing:(UITextField *)textField;
來(lái)等文本框失去焦點(diǎn)后判斷程腹,不過(guò)一般不用這個(gè)方法匣吊。
由于我們的程序中這兩種方法使用起來(lái)都有點(diǎn)問(wèn)題,所以改用通知的方法,其實(shí)這個(gè)通知的名字也是系統(tǒng)的
// 注冊(cè)通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(phoneTextFiledEditChanged:) name:@"UITextFieldTextDidChangeNotification" object:self.phoneNumField];
// 這個(gè)通知里邊的name色鸳,我們可以點(diǎn)擊進(jìn)去看社痛,是UITextField.h里邊系統(tǒng)自己的
// 1.帳號(hào)框的監(jiān)聽
- (void)phoneTextFiledEditChanged:(NSNotification *)notification
{
if (notification.object != self.phoneField) {
return;
}
}
以上。