成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

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

番茄西紅柿 / 3205人閱讀

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

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

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

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

如果以 UItextfield 為基礎(chǔ),將輸入內(nèi)容設(shè)置為密文輸入顯示的話,展示出來(lái)的效果是會(huì)把內(nèi)容擠在一起,所以需要監(jiān)聽(tīng)輸入框的輸入內(nèi)容,然后通過(guò)輸入的內(nèi)容進(jìn)行相應(yīng)判斷,然后我們繪制好對(duì)應(yīng)的小黑點(diǎn),將其在"輸入框"中顯示。同時(shí)除了小黑點(diǎn)之外,我們還需要繪制對(duì)應(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;
        // 隱藏,輸入時(shí)再顯示
        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ù)字鍵盤(pán)
        _passWordTextField.keyboardType = UIKeyboardTypeNumberPad;
        [self.alertWhiteView addSubview:_passWordTextField];
        // 默認(rèn)隱藏
        _passWordTextField.hidden = YES;
        // 添加輸入監(jiān)聽(tīng)
        [_passWordTextField addTarget:self action:@selector(textFieldDidChange:)forControlEvents:UIControlEventEditingChanged];
    }
    return _passWordTextField;
}
監(jiān)聽(tīng)鍵盤(pán)輸入內(nèi)容
// 鍵盤(pán)內(nèi)容監(jiān)聽(tīng)
- (void)textFieldDidChange:(UITextField *)textField{
    if (textField.text.length == 6) {
//        [MBProgressHUD showError:@"密碼錯(cuò)誤,請(qǐng)重新嘗試"];
        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)彈出密碼輸入框時(shí),讓 passWordTextField 變成第一響應(yīng)者,彈起鍵盤(pán)

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

其他

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/7073.html

相關(guān)文章

  • 輸入URL到頁(yè)面加載的過(guò)程?如何由一道題完善自己的前端知識(shí)體系!

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

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

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

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

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

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

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

    BingqiChen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<