国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

密碼輸入框實現流程簡述

番茄西紅柿 / 3199人閱讀

摘要:首先想到輸入框就避不開,所以我們的思路從開始發散。首先需要創建一個密碼輸入框,目的是可以彈起鍵盤,并且輸入內容。

現在的 app 大部分會接入三方支付,同時也有一些 app 會選擇一種充值模式,讓用戶把自己的資金存入 app 內,這樣在用戶需要在 app 中購買商品時,就能夠用自己的錢包進行支付,在這里就會涉及到支付密碼彈窗的實現,下面說一下對一個簡單的密碼支付彈窗實現過程。

首先想到輸入框就避不開 UITextfield,所以我們的思路從 UITextfield 開始發散。

首先需要創建一個密碼輸入框,目的是可以彈起鍵盤,并且輸入內容。

如果以 UItextfield 為基礎,將輸入內容設置為密文輸入顯示的話,展示出來的效果是會把內容擠在一起,所以需要監聽輸入框的輸入內容,然后通過輸入的內容進行相應判斷,然后我們繪制好對應的小黑點,將其在"輸入框"中顯示。同時除了小黑點之外,我們還需要繪制對應的線框。

創建"密碼輸入框"
UIView *inputView = [[UIView alloc]init];
    inputView.backgroundColor = White_Color;
    inputView.layer.borderWidth = 1;
    inputView.layer.borderColor = UIColorFromRGB(0xb2b2b2).CGColor;
    [self.alertWhiteView addSubview:inputView];
    [inputView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.moneyLabel.mas_bottom).offset(19);
        make.centerX.equalTo(self.alertWhiteView);
        make.width.offset(squreWidth*6);
        make.height.offset(squreWidth);
        make.bottom.offset(-19);
    }];
繪制小黑點以及分割線
for (int i = 1; i<7; i++) {
        //  黑色點
        UIView *spotView = [[UIView alloc]initWithFrame:CGRectMake((i-1)*squreWidth+(squreWidth-dotWidth)/2, (squreWidth-dotWidth)/2, dotWidth, dotWidth)];
        spotView.backgroundColor = UIColorFromRGB(0x262122);
        // 切圓
        spotView.clipsToBounds = YES;
        spotView.layer.cornerRadius = dotWidth/2;
        // 隱藏,輸入時再顯示
        spotView.hidden = YES;
        [inputView addSubview:spotView];
        // 把小黑點按照順序依次加入數組中
        [_dotArray addObject:spotView];
        if (i!=6) {
            // 分割線
            UIView *lineView = [[UIView alloc]initWithFrame:CGRectMake(i*squreWidth, 0, 1, squreWidth)];
            lineView.backgroundColor = UIColorFromRGB(0xb2b2b2);
            [inputView addSubview:lineView];
        }
        
    }

添加 UITextfield
// 密碼輸入框
    [self.passWordTextField mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.moneyLabel.mas_bottom).offset(19);
        make.centerX.equalTo(self.alertWhiteView);
        make.width.offset(squreWidth*6);
        make.height.offset(squreWidth);
        make.bottom.offset(-19);
    }];

懶加載方式:

    
// 懶加載方式    
- (UITextField *)passWordTextField{
    if (!_passWordTextField) {
        _passWordTextField = [[UITextField alloc]init];
        // 設置為純數字鍵盤
        _passWordTextField.keyboardType = UIKeyboardTypeNumberPad;
        [self.alertWhiteView addSubview:_passWordTextField];
        // 默認隱藏
        _passWordTextField.hidden = YES;
        // 添加輸入監聽
        [_passWordTextField addTarget:self action:@selector(textFieldDidChange:)forControlEvents:UIControlEventEditingChanged];
    }
    return _passWordTextField;
}
監聽鍵盤輸入內容
// 鍵盤內容監聽
- (void)textFieldDidChange:(UITextField *)textField{
    if (textField.text.length == 6) {
//        [MBProgressHUD showError:@"密碼錯誤,請重新嘗試"];
        if (self.completeBlock) {
            self.completeBlock(textField.text);
            [textField resignFirstResponder];
            textField.text = @"";
            
        }
        
    }
    
    if (textField.text.length == 7) {
        textField.text = [textField.text substringToIndex:1];
        for (int j = 0; j<_dotArray.count; j++) {
            UIView *view = _dotArray[j];
            view.hidden = YES;
        }
    
    }
    if (textField.text.length>0&&textField.text.length<7) {
        for (int j = 0; j<_dotArray.count; j++) {
            UIView *view = _dotArray[j];
  
            if (jelse{
                view.hidden = YES;
            }
        }
        
    }else{
        for (int j = 0; j<_dotArray.count; j++) {
            UIView *view = _dotArray[j];
            view.hidden = YES;
        }
    }
}
這里面比較關鍵的地方是:

自己繪制小黑點代替 passWordTextField 的內容,并添加到自定義的"密碼輸入框"中

當彈出密碼輸入框時,讓 passWordTextField 變成第一響應者,彈起鍵盤

通過鍵盤的監聽事件,內容進行相應判斷,以及取出對應數量的小黑點來進行輸入的展示

其他

在這里省略了很多步驟,只拿最關鍵的過程來描述,比如其他相關視圖的創建,彈起的相關邏輯,以及輸入完畢的回調處理,在這里就不一一贅述了

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/7073.html

相關文章

  • 輸入URL到頁面加載的過程?如何由一道題完善自己的前端知識體系!

    摘要:前言見解有限,如有描述不當之處,請幫忙指出,如有錯誤,會及時修正。為什么要梳理這篇文章最近恰好被問到這方面的問題,嘗試整理后發現,這道題的覆蓋面可以非常廣,很適合作為一道承載知識體系的題目。 前言 見解有限,如有描述不當之處,請幫忙指出,如有錯誤,會及時修正。 為什么要梳理這篇文章? 最近恰好被問到這方面的問題,嘗試整理后發現,這道題的覆蓋面可以非常廣,很適合作為一道承載知識體系的題目...

    kel 評論0 收藏0
  • 輸入URL到瀏覽器顯示頁面的過程,搜集各方面資料總結一下

    摘要:通用頭部這也是開發人員見過的最多的信息,包括如下請求的服務器地址請求方式請求的返回狀態碼,如代表成功請求的遠程服務器地址會轉為譬如,在跨域拒絕時,可能是為,狀態碼為等當然,實際上可能的組合有很多。 面試中經常會被問到這個問題吧,唉,我最開始被問到的時候也就能大概說一些流程。被問得多了,自己就想去找找這個問題的全面回答,于是乎搜了很多資料和網上的文章,根據那些文章寫一個總結。 寫得不好...

    adie 評論0 收藏0
  • 輸入URL到瀏覽器顯示頁面的過程,搜集各方面資料總結一下

    摘要:通用頭部這也是開發人員見過的最多的信息,包括如下請求的服務器地址請求方式請求的返回狀態碼,如代表成功請求的遠程服務器地址會轉為譬如,在跨域拒絕時,可能是為,狀態碼為等當然,實際上可能的組合有很多。 面試中經常會被問到這個問題吧,唉,我最開始被問到的時候也就能大概說一些流程。被問得多了,自己就想去找找這個問題的全面回答,于是乎搜了很多資料和網上的文章,根據那些文章寫一個總結。 寫得不好...

    RobinTang 評論0 收藏0
  • 輸入URL到瀏覽器顯示頁面的過程,搜集各方面資料總結一下

    摘要:通用頭部這也是開發人員見過的最多的信息,包括如下請求的服務器地址請求方式請求的返回狀態碼,如代表成功請求的遠程服務器地址會轉為譬如,在跨域拒絕時,可能是為,狀態碼為等當然,實際上可能的組合有很多。 面試中經常會被問到這個問題吧,唉,我最開始被問到的時候也就能大概說一些流程。被問得多了,自己就想去找找這個問題的全面回答,于是乎搜了很多資料和網上的文章,根據那些文章寫一個總結。 寫得不好...

    BingqiChen 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<