今是昨非

今是昨非

日出江花红胜火,春来江水绿如蓝

iOS開發知識點2——登錄界面

iOS 開發知識點 2—— 登錄界面#

按鈕的實時響應:登錄的時候,需要當用戶有輸入時按鈕才能響應(可點擊),如果有一個輸入框為空,則按鈕不可響應。以前我以為用的是 textfield 的代理方法直接判斷,後來發現那樣不好。有另一種方法

// 首先給textfield添加addTarget方法,注意最後的controlEvents是EditingChanged
[self.accountTextField addTarget:self action:@selector(handleTextDidChange:) forControlEvents:UIControlEventEditingChanged];
[self.passwordTextField addTarget:self action:@selector(handleTextDidChange:) forControlEvents:UIControlEventEditingChanged];

// 然後實現這個方法
- (void)handleTextDidChange:(id)sender
{
    NSString * accountStr = self.accountTextField.text;
    NSString * passwordStr = self.passwordTextField.text;
    if (accountStr.length > 0 && passwordStr.length > 0) {
        // 登錄可響應
        self.loginButton.userInteractionEnabled = YES;
        [self.loginButton setTitleColor:btnEnabledColor forState:UIControlStateNormal];
    } else {
        // 登錄不可響應
        self.loginButton.userInteractionEnabled = NO;
        [self.loginButton setTitleColor:btnUnabledColor forState:UIControlStateNormal];
    }
}

輸入框長度限制:當輸入手機號或者驗證碼時,通常會有長度限制,我們想要的是,11 位的手機號或者 6 位的驗證碼,所以最多只能輸入這麼多,當超出時,不能再顯示,便於用戶理解。

// 這是通過textField的代理方法實現的
_smsPhoneTextField.delegate = self;
_smsCirtifyTextField.delegate = self;

#pragma mark - 輸入長度限制
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if ([string isEqual:@"\n"]) {
        return YES;
    }
    NSString * aString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    if (textField == _smsCirtifyTextField) {
        if (aString.length > 6) {
            aString = [aString substringToIndex:6];
            return NO;
        }
    }
    if (textField == _smsPhoneTextField) {
        if (aString.length > 11) {
            aString = [aString substringToIndex:11];
            return NO;
        }
    }
    return YES;
}

手機號的正則表達式:我收藏了一個常用的正則表達式的博客,很不錯,只需要針對自己的需求在他的基礎上改一下,就可以使用
常用的正則表達式

#pragma mark - 手機號驗證
- (BOOL)validateMobile:(NSString *)mobile
{
    // 手機號以13、15、18、17開頭,八個 \d 數字字符
    NSString * phoneRegex = @"^((13[0-9])|(15[^4,\\D])|(18[0,0-9])|(17[0,0-9]))\\d{8}$";
    NSPredicate * phoneTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", phoneRegex];
    return [phoneTest evaluateWithObject:mobile];
}
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。