代码地址如下:
http://www.demodashi.com/demo/11484.html

一、准备工作

  • xcode
  • 主要实现输入密码的时候不可见

二、程序实现

  • 实现思路怎样

    在支付宝输入密码的时候,如果你不仔细看的话,你就会认为,握草,不是很简单的一个UITextField 然后将属性secureTextEntry设置为YES就可以么,然并....也许这才是支付宝做的好的地方吧,居然在输入密码的时候,什么什么也看不到,哪怕是一个数字,也不会有一闪然后变成黑点的效果。那么,问题来了,我们该怎么实现呢,在静静思考十几分钟后,终于有一个大概方法,那就是在输入密码的UITextField上面加view,并且设置为黑色,造成一种假象,而UITextField还是和普通的输入一样,只是输入的内容和光标不能被用户所看到。
  • 具体设计到哪些代码

    问题一 :如何解决用户看不到输入内容和光标
-(GLTextField *)passwordField
{
if (nil == _passwordField)
{
_passwordField = [[GLTextField alloc] initWithFrame:CGRectMake((kScreenWidth - 44 * 6)/2.0, 100, 44 * 6, 44)];
_passwordField.delegate = (id)self;
_passwordField.backgroundColor = [UIColor whiteColor];
//将密码的文字颜色和光标颜色设置为透明色
//之前是设置的白色 这里有个问题 如果密码太长的话 文字和光标的位置如果到了第一个黑色的密码点的时候 就看出来了
_passwordField.textColor = [UIColor clearColor];
_passwordField.tintColor = [UIColor clearColor];
[_passwordField setBorderColor:UIColorFromRGB(0xdddddd) width:1];
_passwordField.keyboardType = UIKeyboardTypeNumberPad;
_passwordField.secureTextEntry = YES;
[_passwordField addTarget:self action:@selector(passwordFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
}
return _passwordField;
}

问题二 :怎么做到输入密码的时候黑点显示或消失一致

-(void)passwordFieldDidChange:(UITextField *)field
{
[self setDotsViewHidden]; for (int i = 0; i < _passwordField.text.length; i ++)
{
if (_passwordDotsArray.count > i )
{
UIView *dotView = _passwordDotsArray[i];
[dotView setHidden:NO];
}
} if (_passwordField.text.length == 6)
{
NSString *password = _passwordField.text;
if ([password isEqualToString:_password])
{
NSLog(@" 打印信息 密码正确");
}
else
{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:@"密码错误,请重新输入" preferredStyle:UIAlertControllerStyleAlert]; // Create the actions.
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) { [self cleanPassword]; }]; // Add the actions.
[alertController addAction:cancelAction]; [self presentViewController:alertController animated:YES completion:nil];
}
}
} //将所有的假密码点设置为隐藏状态
- (void)setDotsViewHidden
{
for (UIView *view in _passwordDotsArray)
{
[view setHidden:YES];
}
}

问题三:由于UITextField 是可以复制其内容的,怎么屏蔽呢?

这里我采取的方法是继承 UITextField 然后重写方法

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender

//禁止粘贴复制全选等
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
UIMenuController *menuController = [UIMenuController sharedMenuController];
if (menuController) {
[UIMenuController sharedMenuController].menuVisible = NO;
}
return NO;
}

三、运行效果

  • 直接下载demo进行运行即可
  • 运行时的截图



    iOS 仿支付宝密码支付

代码地址如下:
http://www.demodashi.com/demo/11484.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

iOS 仿支付宝密码支付的更多相关文章

  1. iOS仿支付宝首页效果

    代码地址如下:http://www.demodashi.com/demo/12776.html 首先看一下效果 状态栏红色是因为使用手机录屏的原因. 1.问题分析 1.导航栏A有两组控件,随着tabl ...

  2. iOS仿支付宝首页的刷新布局效果

    代码地址如下:http://www.demodashi.com/demo/12753.html XYAlipayRefreshDemo 运行效果 动画效果分析 1.UI需要变动,向上滑动的时候,顶部部 ...

  3. iOS仿支付宝芝麻信用仪表盘效果

    概述 自定义View之高仿支付宝芝麻信用分数仪表盘动画效果 详细 代码下载:http://www.demodashi.com/demo/10654.html 仿支付宝芝麻信用仪表盘效果 一.主要思路 ...

  4. ASP.NET MVC Filters 4种默认过滤器的使用【附示例】 数据库常见死锁原因及处理 .NET源码中的链表 多线程下C#如何保证线程安全? .net实现支付宝在线支付 彻头彻尾理解单例模式与多线程 App.Config详解及读写操作 判断客户端是iOS还是Android,判断是不是在微信浏览器打开

    ASP.NET MVC Filters 4种默认过滤器的使用[附示例]   过滤器(Filters)的出现使得我们可以在ASP.NET MVC程序里更好的控制浏览器请求过来的URL,不是每个请求都会响 ...

  5. iOS - AliPay 支付宝支付

    1.支付宝支付申请 支付宝支付官方签约集成指引 支付宝APP支付官方集成指引 蚂蚁金服开放平台 1.1 支付宝 APP 支付申请步骤 APP 支付:APP 支付是商户通过在移动端应用 APP 中集成开 ...

  6. IOS开发--支付宝支付

    前言:继上次<IOS开发--微信支付>以来,一直没有太多时间,更新总结详细支付这样的长篇大论,很抱歉.今天,推出支付宝支付的详细流程. 1.开始下载和查看支付宝支付的Demo. 我们直接进 ...

  7. 集成支付宝钱包支付iOS SDK的方法与经验

    流程 摘自第一个文档<支付宝钱包支付接口开发包2.0标准版.pdf> 图中的“商户客户端”就是我们的iOS客户端需要做的事情: 调用支付宝支付接口 处理支付宝返回的支付结果 在调用支付宝支 ...

  8. ios--集成支付宝钱包支付iOS SDK的方法与经验

    文/胖花花(简书作者)原文链接:http://www.jianshu.com/p/fe56e122663e著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 没想到,支付宝的SDK是我目前 ...

  9. 集成支付宝钱包支付ios SDK的方法和经验

    没想到,支付宝的SDK是我目前用过的所有第三方SDK中最难用的一个了. 下载 首先,你要想找到这个SDK,都得费点功夫.现在的SDK改名叫移动支付集成开发包了,下载页面在 这里 的 “请点此下载集成开 ...

随机推荐

  1. 【BZOJ 2212】【POI 2011】Tree Rotations

    http://www.lydsy.com/JudgeOnline/problem.php?id=2212 自下而上贪心. 需要用权值线段树来记录一个权值区间内的出现次数. 合并线段树时统计逆序对的信息 ...

  2. [BZOJ 2668] 交换棋子

    Link: BZOJ 2668 传送门 Solution: 重点在于对于每条转移路径:首尾算一次,中间节点算两次 可以一点拆三点,将原流量拆成入流量和出流量 但其实也可以就拆两点,分前后是否是一首尾点 ...

  3. BZOJ 4802 欧拉函数(Pollard_Rho)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4802 [题目大意] 已知N,求phi(N),N<=10^18 [题解] 我们用P ...

  4. [TCO2013]TrickyInequality

    $\newcommand{stirf}[2]{{{#1}\brack{#2}}}$$\newcommand{stirs}[2]{{{#1}\brace{#2}}}$题意:$\sum\limits_{i ...

  5. [PKUSC2018]最大前缀和

    [PKUSC2018]最大前缀和 题目大意: 有\(n(n\le20)\)个数\(A_i(|A_i|\le10^9)\).求这\(n\)个数在随机打乱后最大前缀和的期望值与\(n!\)的积在模\(99 ...

  6. CentOS通过日志反查入侵(转)

    1.查看日志文件 Linux查看/var/log/wtmp文件查看可疑IP登陆 last -f /var/log/wtmp  该日志文件永久记录每个用户登录.注销及系统的启动.停机的事件.因此随着系统 ...

  7. 【redis】2.redis可视化工具安装使用

    redis可视化工具:Redis Desktop Manager 1.redis桌面管理工具[可视化工具]下载 下载地址:https://redisdesktop.com/download 2.点击安 ...

  8. laravel的 array 函数

    代码如下:  routes.php文件 // 获⃣取⃣数⃣组⃣的⃣第⃣一⃣个⃣ Route::get('/helper', function () { $arr = [1, 2, 4]; return ...

  9. hive删除列

    hive中删除列时没有与mysql语句alter table <table> drop column <col>对应的语句. 然而依然可以完成此功能:使用ALTER TABLE ...

  10. Linux /sbin/service脚本一个基本无影响的bug

    CentOS提供了一个启动服务的功能:service [service name] (start|stop|restart|...),此功能的执行脚本为/sbin/service. 今天看了下此脚本, ...