请教一个有关 iOS 的问题百思不得其解的快递员

越狱仍有卖点 iOS 9尚缺乏的5个功能
iOS系统的改进自然不容小觑,但是仍然不够完善。如果能有以下几个功能,那么越狱便也不再有必要了。
NO.1 Dock图标自定义
iPhone端iOS的Dock栏仅支持最多4个图标,但是通过越狱插件你可以实现更多。利用betterFiveIconDock插件便可以将iOS的Dock图标由4个增加为5个,让你最常用的图标集中在Dock栏中,方便使用同时不会破坏UI美感。
NO.2控制中心扩展
iOS的控制中心虽然功能得到极大扩充,但是与Android相比仍然不够完善。利用CCSettings等越狱插件,iOS的控制中心能够得到极大扩展,数据蜂窝连接、VPN、个人热点等功能都能快速开关。
NO.3 Turbo模式
从iOS 7时代开始,用户已经可以在界面中使用动画效果,但是整体优化效果并不出众,多数人会选择将动画效果关闭。不过如果你想体验动画效果同时又不愿意影响响应速度,不妨试试越狱插件——Speed Intensifler,让iOS加入Turbo功能,允许用户调整动画占用系统资源量,实现更高效的使用体验。
NO.4横屏模式
官方系统中仅有iPhone 6 Plus与iPhone 6S Plus支持横屏模式。不过如果利用LittleBrother这样的插件,即便是iPhone 4S也能轻松实现横屏操作。相较而言,横屏操作存在必要性,因此在下一代iOS更新中,我们希望能够加入通用性的横屏功能。
NO.5滑动页面效果
虽然iOS系统并没有必要像Android一样拥有太多花哨的效果。但是显然对于用户而言,个性化定制是必不可少的。利用各种插件如Barrel等等便能够实现各式各样的屏幕滑动效果。对于iOS而言,增加一两种滑动特效也是颇具必要性的。
扫一扫用手机查看资讯
您还可以输入个字
大家都在看
客户端下载:
Copyright (C) 2006-, All rights reserved.
北京凯铭风尚网络技术有限公司 版权所有iOS6下UITextField退格变清空问题的解决方法 - 推酷
iOS6下UITextField退格变清空问题的解决方法
自己的项目中一直有一个必现的UITextField退格变清空问题,测试发现只有iOS6下有,其它iOS版本都没有问题,基本上可以确定与iOS6有关。由于问题不是很大又忙就搁置了很久,今天实在不能忍受便花了点时间解决此问题,记录一下吧。
这个问题是在某个有默认值的UITextField上是必现的,一旦用退格键删除最后一个字符或中间某个字符,整个UITextfield的内容被清空了,一直百思不得其解,google了一下发现有人遇到类似的问题,并给出了复现步骤(
有一个secureTextEntry为Yes的UITextField和 一个普通的UITextField,重现步骤:
1. 点击普通的UITextField输入类容,
2. 点击密码UITextField输入内容,
3. 点击普通的UITextField重新获得焦点,
4. 接着点击键盘上的退格键,
结果:这时会发现普通的UITextField被清空了。
测试了一下,随便找一个有用户名与密码登录页面的应用,在iOS6下就会复现出这个问题,比如iPhone自带的邮件app。但这个重现步骤说得并不准确,第1步和第2步的前提是对应的UITextField已经有内容,虽然跟自己的复现方法有点不一样,不过总算知道这个问题是怎么回事了。怎么说呢,这应该是iOS6的UITextField的一个新特性引入的问题,原文把这个问题称之为“iOS 6 Secure密码UITextField造成非密码UITextField退格清空Bug”,但是iOS6.0就有这个问题,iOS6.1.3都没有解决,估计apple没把它当bug,坑爹啊。
咱们拿apple没办法,那就只有想办法绕过去啊,初步的思路是截获退格键删除行为,每点一次退格键删除时只允许删除一个字符。这就要用到UITextFieldDelegate的一个textField:shouldChangeCharactersInRange:replacementString方法,这个方法是在UITextField的内容改变时调用,第二个参数表明内容改变的范围,第三个参数是替代的字符串。代码如下:
Here’s Code
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
if (range.location & 0 && range.length == 1 && string.length == 0)
textField.text = [textField.text substringToIndex:textField.text.length - 1];
return NO;
return YES;
设置一下UITextField的delegate就可以调用到此方法,range.length == 1 && string.length == 0就是删除一个字符时所满足的条件,如果条件满足,就只让textField的内容减少一个字符。初步测试,可以解决退格变清空的问题,但是又带来另一个问题:如果是在文字中间点退格键删除文字,就变成从文字的最后删除一个字符。这并不是我们想要的,怎么办呢,那就要找到删除的字符的位置,这个
里给了一个终极解决办法,代码如下:
Here’s Code
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
if (range.location & 0 && range.length == 1 && string.length == 0)
// Stores cursor position
UITextPosition *beginning = textField.beginningOfDocument;
UITextPosition *start = [textField positionFromPosition:beginning offset:range.location];
NSInteger cursorOffset = [textField offsetFromPosition:beginning toPosition:start] + string.length;
// Save the current text, in case iOS deletes the whole text
NSString *text = textField.text;
// Trigger deletion
[textField deleteBackward];
// iOS deleted the entire string
if (textField.text.length != text.length - 1)
textField.text = [text stringByReplacingCharactersInRange:range withString:string];
// Update cursor position
UITextPosition *newCursorPosition = [textField positionFromPosition:textField.beginningOfDocument offset:cursorOffset];
UITextRange *newSelectedRange = [textField textRangeFromPosition:newCursorPosition toPosition:newCursorPosition];
[textField setSelectedTextRange:newSelectedRange];
return NO;
return YES;
思路是先取到光标位置,把文本内容暂存,清空原来UITextField的内容,然后将暂存的文本内容中光标左侧的文字replace掉重新赋给UITextField,并恢复光标位置,难点在于怎么获取光标位置与恢复光标位置。
一般用到用户名与密码UITextField的地方用这个方法就能解决问题了,只是还有点小问题,即如果不是从中间删除一个字符,而是一次删除若干个字符还是有问题的,这是由if中的range.length == 1条件限制的,稍加改造下应该就能解决。另外一个问题是如果有中文字符或其它UTF8字符,估计得考虑一下是不是应该要用“text.length – 1”,不过能有多少应用的用户名或密码带中文呢
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&

我要回帖

更多关于 百思不得其解 的文章

 

随机推荐