亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS實現類似微信和支付寶的密碼輸入框(UIKeyInput協議)

2020-07-26 03:17:13
字體:
來源:轉載
供稿:網友

目前在項目中需要實現發紅包的功能,自己就寫了一個密碼輸入框的控件,主要用到了UIKeyInput協議和CoreGraphics框架,效果類似微信支付,感覺還行就把我的思路和制作過程寫下來給大家分享一下。

讓你的自定義View具備輸入的功能(UIKeyInput協議)

通過UIKeyInput協議可以為響應者提供簡單的鍵盤輸入的功能,讓需要鍵盤的responder成為第一響應者就行了。UIKeyInput協議必須實現的有三個方法,分別是以下方法:

#pragma mark - UIKeyInput/** * 用于顯示的文本對象是否有任何文本 */- (BOOL)hasText {  return self.textStore.length > 0;}/** * 插入文本 */- (void)insertText:(NSString *)text {  if (self.textStore.length < self.passWordNum) {    //判斷是否是數字    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:MONEYNUMBERS] invertedSet];    NSString*filtered = [[text componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];    BOOL basicTest = [text isEqualToString:filtered];    if(basicTest) {     if ([self.delegate respondsToSelector:@selector(passWordDidChange:)]) {        [self.delegate passWordDidChange:self];      }      if (self.textStore.length == self.passWordNum) {        if ([self.delegate respondsToSelector:@selector(passWordCompleteInput:)]) {          [self.delegate passWordCompleteInput:self];        }      }      [self.textStore appendString:text];      [self setNeedsDisplay];    }  }}/** * 刪除文本 */- (void)deleteBackward {  if (self.textStore.length > 0) {    [self.textStore deleteCharactersInRange:NSMakeRange(self.textStore.length - 1, 1)];   if ([self.delegate respondsToSelector:@selector(passWordDidChange:)]) {      [self.delegate passWordDidChange:self];    }  }  [self setNeedsDisplay];}/** * 是否能成為第一響應者 */- (BOOL)canBecomeFirstResponder {  return YES;}/** * 點擊成為第一相應者 */- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {  if (![self isFirstResponder]) {    [self becomeFirstResponder];  }}

通過CoreGraphics繪制出密碼輸入框

實現的思路是通過CoreGraphics框架繪制出密碼輸入框的外框和里面的小黑點,然后通過從鍵盤上獲取到的字符串判斷輸入的位數,具體實現如下:

/** * 設置正方形的邊長 */- (void)setSquareWidth:(CGFloat)squareWidth {  _squareWidth = squareWidth;  [self setNeedsDisplay];}/** * 設置鍵盤的類型 */- (UIKeyboardType)keyboardType {  return UIKeyboardTypeNumberPad;}/** * 設置密碼的位數 */- (void)setPassWordNum:(NSUInteger)passWordNum {  _passWordNum = passWordNum;  [self setNeedsDisplay];}/** * 繪制 */- (void)drawRect:(CGRect)rect {  CGFloat height = rect.size.height;  CGFloat width = rect.size.width;  CGFloat x = (width - self.squareWidth*self.passWordNum)/2.0;  CGFloat y = (height - self.squareWidth)/2.0;  CGContextRef context = UIGraphicsGetCurrentContext();  //畫外框  CGContextAddRect(context, CGRectMake( x, y, self.squareWidth*self.passWordNum, self.squareWidth));  CGContextSetLineWidth(context, 1);  CGContextSetStrokeColorWithColor(context, self.rectColor.CGColor);  CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);  //畫豎條  for (int i = 1; i <= self.passWordNum; i++) {    CGContextMoveToPoint(context, x+i*self.squareWidth, y);    CGContextAddLineToPoint(context, x+i*self.squareWidth, y+self.squareWidth);     CGContextClosePath(context);  }  CGContextDrawPath(context, kCGPathFillStroke);  CGContextSetFillColorWithColor(context, self.pointColor.CGColor);  //畫黑點  for (int i = 1; i <= self.textStore.length; i++) {    CGContextAddArc(context, x+i*self.squareWidth - self.squareWidth/2.0, y+self.squareWidth/2, self.pointRadius, 0, M_PI*2, YES);    CGContextDrawPath(context, kCGPathFill);  }}

源碼下載:https://github.com/631106979/WCLPassWordView

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲视频777| 懂色av影视一区二区三区| 97香蕉超级碰碰久久免费的优势| 欧美精品午夜视频| 亚洲男人天天操| 亚洲成人久久久| 91九色在线视频| 国产精品pans私拍| 亚洲欧美另类自拍| 亚洲成人xxx| 久久久久女教师免费一区| 人妖精品videosex性欧美| 日本精品va在线观看| 亚洲成人网在线观看| 国产精品一二三在线| 粗暴蹂躏中文一区二区三区| 日韩精品免费视频| 欧美一区二区影院| 久久全球大尺度高清视频| 欧美午夜激情视频| 超在线视频97| 亚洲a成v人在线观看| 97久久超碰福利国产精品…| 日韩在线观看你懂的| 亚洲视频在线观看免费| 欧美诱惑福利视频| 热99精品只有里视频精品| 成人黄色片在线| 国产盗摄xxxx视频xxx69| 精品成人av一区| 欧美一级视频一区二区| 国模私拍一区二区三区| 久久久久久久色| 色中色综合影院手机版在线观看| 亚洲www在线观看| 亚洲男人天天操| 亚洲欧美成人在线| 国产精品扒开腿做| 色综合男人天堂| 国产丝袜一区二区三区| 国产suv精品一区二区三区88区| www高清在线视频日韩欧美| 日韩成人av网| 欧美黑人一级爽快片淫片高清| 国产日产欧美a一级在线| 日韩最新中文字幕电影免费看| 正在播放亚洲1区| 亚洲国产天堂久久国产91| 久久久久国产视频| 国产精品视频一区国模私拍| 亚洲伊人久久综合| 国产原创欧美精品| 欧美日韩爱爱视频| 91精品久久久久久综合乱菊| 美日韩在线视频| 91久久中文字幕| 日韩最新中文字幕电影免费看| 亚洲国产欧美一区二区丝袜黑人| 伊人久久五月天| 欧美专区福利在线| 国产日韩欧美一二三区| 日韩成人av在线播放| 国产中文日韩欧美| 久久久久五月天| 中文字幕亚洲一区二区三区| 国产精品久久久久免费a∨| 欧美香蕉大胸在线视频观看| 性色av一区二区三区在线观看| 亚洲va男人天堂| 米奇精品一区二区三区在线观看| 日韩在线精品一区| 在线丨暗呦小u女国产精品| 久久999免费视频| 高清欧美电影在线| 日韩视频一区在线| 国产日韩在线观看av| 国内精品久久久久久| 中文字幕日韩在线播放| 国产精品扒开腿做爽爽爽视频| 成人国产精品日本在线| 日韩电影中文字幕在线观看| 日本精品久久久久影院| 欧美成人四级hd版| 亚洲xxx自由成熟| 自拍偷拍亚洲区| 日韩激情视频在线| 久久久亚洲影院| 69视频在线播放| 精品国产欧美一区二区三区成人| 国语自产在线不卡| 精品久久久久久久大神国产| 久久中国妇女中文字幕| 国产午夜精品麻豆| 亚洲一区美女视频在线观看免费| 亚洲欧美第一页| 欧美日韩国产999| 亚洲aⅴ日韩av电影在线观看| 日韩av在线播放资源| 日日摸夜夜添一区| 欧美视频不卡中文| 久久视频国产精品免费视频在线| 亚洲精品一二区| 久久五月天综合| 韩剧1988在线观看免费完整版| 日韩欧美国产激情| 在线免费观看羞羞视频一区二区| 日韩视频免费中文字幕| 精品亚洲国产视频| 5566日本婷婷色中文字幕97| 久久久久久国产精品久久| 欧日韩在线观看| 姬川优奈aav一区二区| 一区二区三区美女xx视频| 26uuu国产精品视频| 中文字幕不卡在线视频极品| 91欧美精品成人综合在线观看| 亚洲人成电影网站色www| 欧美国产日韩精品| 91丨九色丨国产在线| 中文字幕一区日韩电影| 国内成人精品一区| 精品夜色国产国偷在线| 久久精视频免费在线久久完整在线看| 国产不卡精品视男人的天堂| 热草久综合在线| 国产视频久久网| 一本色道久久综合亚洲精品小说| 国产精品爽黄69天堂a| 5278欧美一区二区三区| 色婷婷综合成人av| 亚洲欧美在线第一页| 国产91成人在在线播放| 日韩精品中文字幕有码专区| 欧美性猛xxx| 精品久久久久久亚洲国产300| 午夜精品理论片| 精品欧美国产一区二区三区| 久久久久久com| 欧美在线亚洲一区| 久久精品电影网| 日韩在线免费观看视频| 国产精品一区二区在线| 91po在线观看91精品国产性色| 疯狂做受xxxx高潮欧美日本| 3344国产精品免费看| 一区二区欧美在线| 日本成熟性欧美| 亚洲成人av片在线观看| 欧美国产在线视频| 亚洲精品日韩在线| 欧美大尺度激情区在线播放| 一区二区三区在线播放欧美| 国产精品日韩在线一区| 91chinesevideo永久地址| 亚洲在线第一页| 久久在线精品视频| 北条麻妃在线一区二区| 91精品国产自产在线观看永久| 97久久精品人人澡人人爽缅北| 亚洲激情中文字幕| 亚洲va欧美va国产综合剧情| 精品高清美女精品国产区| 亚洲第一区第二区| 日韩av色综合|