成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

密碼輸入框?qū)崿F(xiàn)流程簡述

番茄西紅柿 / 3278人閱讀

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

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

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

首先需要創(chuàng)建一個密碼輸入框,目的是可以彈起鍵盤,并且輸入內(nèi)容。

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

創(chuàng)建"密碼輸入框"
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);
    }];
繪制小黑點(diǎn)以及分割線
for (int i = 1; i<7; i++) {
        //  黑色點(diǎn)
        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];
        // 把小黑點(diǎn)按照順序依次加入數(shù)組中
        [_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];
        // 設(shè)置為純數(shù)字鍵盤
        _passWordTextField.keyboardType = UIKeyboardTypeNumberPad;
        [self.alertWhiteView addSubview:_passWordTextField];
        // 默認(rèn)隱藏
        _passWordTextField.hidden = YES;
        // 添加輸入監(jiān)聽
        [_passWordTextField addTarget:self action:@selector(textFieldDidChange:)forControlEvents:UIControlEventEditingChanged];
    }
    return _passWordTextField;
}
監(jiān)聽鍵盤輸入內(nèi)容
// 鍵盤內(nèi)容監(jiān)聽
- (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;
        }
    }
}
這里面比較關(guān)鍵的地方是:

自己繪制小黑點(diǎn)代替 passWordTextField 的內(nèi)容,并添加到自定義的"密碼輸入框"中

當(dāng)彈出密碼輸入框時,讓 passWordTextField 變成第一響應(yīng)者,彈起鍵盤

通過鍵盤的監(jiān)聽事件,內(nèi)容進(jìn)行相應(yīng)判斷,以及取出對應(yīng)數(shù)量的小黑點(diǎn)來進(jìn)行輸入的展示

其他

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

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/7073.html

相關(guān)文章

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

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

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

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

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

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

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

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

    BingqiChen 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<