iOS如何实现类似微信和支付宝的密码输入框

  介绍

小编给大家分享一下iOS如何实现类似微信和支付宝的密码输入框,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

 iOS如何实现类似微信和支付宝的密码输入框

让你的自定义观点具备输入的功能(UIKeyInput协议)

通过UIKeyInput协议可以为响应者提供简单的键盘输入的功能,让需要键盘的应答器成为第一响应者就行了.UIKeyInput协议必须实现的有三个方法,分别是以下方法:

# pragma  mark 作用;UIKeyInput/* *   ,*用于显示的文本对象是否有任何文本   ,*/安康;(BOOL) hasText  {   return 才能;self.textStore.length 祝辞,0;   }   ,/* *   ,*插入文本   ,*/安康;(空白)insertText:(NSString  *) text  {   if 才能;(self.textStore.length  & lt;, self.passWordNum), {   ,,,//判断是否是数字   ,,,NSCharacterSet  * cs =, [[NSCharacterSet  characterSetWithCharactersInString: MONEYNUMBERS], invertedSet);   ,,,NSString * filtered =, [[text  componentsSeparatedByCharactersInSet: c], componentsJoinedByString: @"“);   ,,,BOOL  basicTest =, (text  isEqualToString:过滤);   ,,,如果(basicTest), {   ,,,,if  ([self.delegate  respondstoselectorismemberofclass: @ selector (passWordDidChange:))), {   ,,,,,,,(self.delegate  passWordDidChange:自我);   ,,,,,}   ,,,,,if  (self.textStore.length ==, self.passWordNum), {   ,,,,,,,if  ([self.delegate  respondstoselectorismemberofclass: @ selector (passWordCompleteInput:))), {   ,,,,,,,,,(self.delegate  passWordCompleteInput:自我);   ,,,,,,,}   ,,,,,}   ,,,,,(self.textStore  appendString:文本);   ,,,,,(self  setNeedsDisplay);   ,,,}   ,,}   }   ,/* *   ,*删除文本   ,*/安康;(空白)deleteBackward  {   if 才能;(self.textStore.length 祝辞,0),{   ,,,(self.textStore  deleteCharactersInRange: NSMakeRange (self.textStore.length 背后,1,1)];   ,,if  ([self.delegate  respondstoselectorismemberofclass: @ selector (passWordDidChange:))), {   ,,,,,(self.delegate  passWordDidChange:自我);   ,,,}   ,,}   (self  setNeedsDisplay)才能;   }   ,/* *   ,*是否能成为第一响应者   ,*/安康;(BOOL) canBecomeFirstResponder  {   return 才能;是的;   }   ,/* *   ,*点击成为第一相应者   ,*/安康;(空白)touchesBegan:(NSSet

通过CoreGraphics绘制出密码输入框

实现的思路是通过CoreGraphics框架绘制出密码输入框的外框和里面的小黑点,然后通过从键盘上获取到的字符串判断输入的位数,具体实现如下:

/* *   ,*设置正方形的边长   ,*/安康;(空白)setSquareWidth:(CGFloat) squareWidth  {   时间=_squareWidth 才能;squareWidth;   (self  setNeedsDisplay)才能;   }   ,/* *   ,*设置键盘的类型   ,*/的背后,(UIKeyboardType) keyboardType  {   return 才能;UIKeyboardTypeNumberPad;   }   ,/* *   ,*设置密码的位数   ,*/安康;(空白)setPassWordNum:(了NSUInteger) passWordNum  {   时间=_passWordNum 才能;passWordNum;   (self  setNeedsDisplay)才能;   }   ,/* *   ,*绘制   ,*/安康;(空白)绘制矩形(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才能(上下文,CGRectMake (, x,, y,, self.squareWidth * self.passWordNum, self.squareWidth));   CGContextSetLineWidth才能(上下文,1);   CGContextSetStrokeColorWithColor才能(上下文,self.rectColor.CGColor);   CGContextSetFillColorWithColor才能(上下文,[UIColor  whiteColor] .CGColor);//画才能竖条   for 才能;(int 小姐:=,1;,小姐:& lt;=, self.passWordNum;,我+ +),{   ,,,CGContextMoveToPoint (x + i * self.squareWidth背景下,,,,y);   ,,,CGContextAddLineToPoint (x + i * self.squareWidth背景下,,,,y + self.squareWidth);   ,,,,CGContextClosePath(上下文);   ,,}   CGContextDrawPath才能(上下文,kCGPathFillStroke);   CGContextSetFillColorWithColor才能(上下文,self.pointColor.CGColor);//画才能黑点   null   null   null   null   null

iOS如何实现类似微信和支付宝的密码输入框