700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > iOS实现类似微信和支付宝的密码输入框(UIKeyInput协议)

iOS实现类似微信和支付宝的密码输入框(UIKeyInput协议)

时间:2019-10-04 00:07:40

相关推荐

iOS实现类似微信和支付宝的密码输入框(UIKeyInput协议)

微信小程序|微信开发

ios 微信 支付宝 密码

微信小程序-微信开发

目前在项目中需要实现发红包的功能,自己就写了一个密码输入框的控件,主要用到了UIKeyInput协议和CoreGraphics框架,效果类似微信支付,感觉还行就把我的思路和制作过程写下来给大家分享一下。

母婴商城高仿源码,ubuntu pts0,爬虫软件 批量截图,PHP幽默,seo诊断数据lzw

表白源码,vscode如何设置特效字体,ubuntu 上手难度,tomcat启动报错433,scrapy爬虫创建,php教材书,seo营销推广工具关键词lzw

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

金融宝p2p网络贷款平台系统 源码,vscode怎么调试字体,安装ubuntu 共存,tomcat项目启动路径,php爬虫要点,php 转字节流,河北seo整站优化哪家好,手机网站 教程,团购模板 下载lzw

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

#pragma mark - UIKeyInput/** * 用于显示的文本对象是否有任何文本 */- (BOOL)hasText { return self.textStore.length > 0;} /** * 插入文本 */- (void)insertText:(NSString *)text { 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 *)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); }}

更多iOS实现类似微信和支付宝的密码输入框(UIKeyInput协议)相关文章请关注PHP中文网!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。