iOS如何实现类似微信和支付宝的密码输入框
小编给大家分享一下iOS如何实现类似微信和支付宝的密码输入框,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
让你的自定义View具备输入的功能(UIKeyInput协议)
通过UIKeyInput协议可以为响应者提供简单的键盘输入的功能,让需要键盘的responder成为第一响应者就行了。UIKeyInput协议必须实现的有三个方法,分别是以下方法:
#pragmamark-UIKeyInput
/**
*用于显示的文本对象是否有任何文本
*/
-(BOOL)hasText{
returnself.textStore.length>0;
}
/**
*插入文本
*/
-(void)insertText:(NSString*)text{
if(self.textStore.length0){
[self.textStoredeleteCharactersInRange:NSMakeRange(self.textStore.length-1,1)];
if([self.delegaterespondsToSelector:@selector(passWordDidChange:)]){
[self.delegatepassWordDidChange:self];
}
}
[selfsetNeedsDisplay];
}
/**
*是否能成为第一响应者
*/
-(BOOL)canBecomeFirstResponder{
returnYES;
}
/**
*点击成为第一相应者
*/
-(void)touchesBegan:(NSSet*)toucheswithEvent:(UIEvent*)event{
if(![selfisFirstResponder]){
[selfbecomeFirstResponder];
}
} 通过CoreGraphics绘制出密码输入框
实现的思路是通过CoreGraphics框架绘制出密码输入框的外框和里面的小黑点,然后通过从键盘上获取到的字符串判断输入的位数,具体实现如下:
/**
*设置正方形的边长
*/
-(void)setSquareWidth:(CGFloat)squareWidth{
_squareWidth=squareWidth;
[selfsetNeedsDisplay];
}
/**
*设置键盘的类型
*/
-(UIKeyboardType)keyboardType{
returnUIKeyboardTypeNumberPad;
}
/**
*设置密码的位数
*/
-(void)setPassWordNum:(NSUInteger)passWordNum{
_passWordNum=passWordNum;
[selfsetNeedsDisplay];
}
/**
*绘制
*/
-(void)drawRect:(CGRect)rect{
CGFloatheight=rect.size.height;
CGFloatwidth=rect.size.width;
CGFloatx=(width-self.squareWidth*self.passWordNum)/2.0;
CGFloaty=(height-self.squareWidth)/2.0;
CGContextRefcontext=UIGraphicsGetCurrentContext();
//画外框
CGContextAddRect(context,CGRectMake(x,y,self.squareWidth*self.passWordNum,self.squareWidth));
CGContextSetLineWidth(context,1);
CGContextSetStrokeColorWithColor(context,self.rectColor.CGColor);
CGContextSetFillColorWithColor(context,[UIColorwhiteColor].CGColor);
//画竖条
for(inti=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(inti=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如何实现类似微信和支付宝的密码输入框”有了一定的了解,如果想了解更多相关知识,欢迎关注恰卡编程网行业资讯频道,感谢各位的阅读!
推荐阅读
-
Xcode 15 新特性解析:SwiftUI 预览优化与 iOS 真机调试流程简化
-
Xcode 编译耗时过长?5 个技巧加速 iOS 项目构建与打包流程
-
能在ios上虚拟windows吗
近期有些网友想要了解能在ios上虚拟windows吗的相关情况,小编通过整理给您分享一下。iOS设备运行Windows的可能性许多...
-
ios14系统怎么用nfc(ios 14新增的nfc功能怎么用)
ios14新增的nfc功能怎么用?1.打开iPhone后,选择手机的[设置]图标。2.进入后,点击【通用】选项进入。3.单击并选...
-
微信小程序iOS端怎么暂停animated动画
微信小程序iOS端怎么暂停animated动画这篇“微信小程序iO...
-
iOS中多线程的示例分析
iOS中多线程的示例分析这篇文章给大家分享的是有关iOS中多线程的...
-
ios启动私有链查询区块信息的方法是什么
ios启动私有链查询区块信息的方法是什么本篇内容介绍了“ios启动...
-
正则表达式在ios中怎么用
正则表达式在ios中怎么用这篇文章主要为大家展示了“正则表达式在i...
-
如何进行iOS中的信息泄露漏洞CVE-2020-9964分析
如何进行iOS中的信息泄露漏洞CVE-2020-9964分析今天就...
-
iOS中怎么删除无用的类
本篇文章给大家分享的是有关iOS中怎么删除无用的类,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话...
