【 每日·槽】第3话 -- UITextField的七宗罪

本节目纯属扯淡,如有得罪,还请。。。。。。有本事你来打我呀!!!

【 每日·槽】第3话 – UITextField的七宗罪
每日槽,用生命在吐槽!

今天来讨(tu)论(cao)下 TextField 的七宗罪。

1、设置文字的函数命名
我最近做了个 登录界面 记住 账号密码的功能,需要用户一登录,上次的输入会自动填充。
这个功能首先需要读取用户在 TextField 里输入的内容,然后保存下来。所以我.h文件里一查,读取文字的函数是:getStringValue()。
接下来需要的功能是往 TextField 写内容,我想这个函数应该是 setStringValue(str)吧。结果证明我还是太天真,这个函数竟然不存在!经过我的苦苦搜寻,原来是setText(str)。好吧我忍了。

后来,我需要给按钮设置文字,这次我用setText(str)没错了吧,哦哈哈。但结果再次证明我还是太天真,再次苦苦查询,原来是setTitleText(str)。

总结下:
Text,TextField:
设置文字:setText();
读取文字:getStringValue();

Button:
设置文字:setTitleText()
读取文字:getTitleText()

[掀桌]

坑爹呢这是!你们内部用着 cocos2d-x 的setString 和 getString 这么统一一致的接口名,自己的名字这么随意潇洒有个性,难道你就不会脸红吗?命名这么混乱你家里人知道吗?

2、密码框的setText(str)
没办法,我也改变不了这么奇葩的命名方式,只能继续忍了。接着做“记住密码”的功能。在用户第二次登录时,自动填充密码。但。。。。密码怎么是明文显示的!我命名在编辑器里设置了显示‘*’啊,之前注册登录都是星号!

3、字体拉伸
再看看注册界面。。。为什么字体会拉伸!??我在编辑器里看占位符是正常的呀!
编辑器里效果:

实际效果:

经过我反复测试,原来:调整TextField的大小尺寸不能选Custom,这样会拉伸。要调整大小只能选择缩放。
我觉得没人会想要上面那种拉伸的效果吧。应该避免这种效果出现。

4、弹出的虚拟键盘会挡住输入框。
我在论坛里也看到有人问这个问题,解决方法见cocos2d-sample 里的栗子,竟然需要我们自己写一个action将场景往上移动,等输入完毕再移动下来。。。。好吧。
如图:我点击密码框,控件被挡住,完全看不到输入内容。

5、用户输入完毕必须点击虚拟键盘上的 ‘return’才能撤回键盘。
这个体验非常不爽,开始我还以为是卡住了。解决方法只能修改源码,我之前改过一次,点击空白处键盘会收回。但版本一升级,还得再改,太麻烦了。

6、TextField的响应范围会莫名其妙的改变。
比如当只有1个字的时候,只有点中中间那么一小块地方,才会弹出键盘。当把内容全部删掉,还是只有那么一小块地方可以响应。想像下如果用户需要重新输入密码,会多么的痛苦。

上面的TextField我设置了输入长度限制。而当我没有限制输入长度的时候:先输入一长串:

再删掉内容,这时候如果点击红圈处,键盘也会弹出来。

我觉得响应区域应该固定为TextField的大小。

7、没有闪烁的光标。
当然这个功能对于目前的TextField来说太高大上了,先把最基本的功能完善好再说吧。

今天每日槽就到这里,小伙伴们有没有要补刀的,欢迎留言!


往期回顾:

【 每日·槽】第1话 – 论setEnabled和setVisible
http://www.cocoachina.com/bbs/read.php?tid=181496

【 每日·槽】第2话 – 模态窗口的制作
http://www.cocoachina.com/bbs/read.php?tid=181959

【 每日·槽】第3话-- UITextField的七宗罪 http://www.cocoachina.com/bbs/read.php?tid=182207

【 每日·槽】第4话-- UI
TextField 中文字符的长度检测问题

http://www.cocoachina.com/bbs/read.php?tid=187118

每日·槽】第5话 – 2014CocoaChina春季开发者大会实吐
http://www.cocoachina.com/bbs/read.php?tid=194385

第4点好像不能吐 ios中基本是这样 android的是会把输入框和键盘一起弹出来 但是个人真心觉得android的输入丑到爆

遇到同样的问题

同样的问题,简直不能忍。

谢谢楼上各位捧场:870:

:2: 支持不错!~

有点意思啊,呵呵。。

TextField 确实需要完善、、当初使用TextField我不知道改了多少textfield的代码。还有很多奇葩的 大小设置、

为了避免用奇葩的TextField,我在界面上贴了个图,然后动态插了一个CCEditBox进去。。楼主你可以推广一下这个用法的说,立马有高大上的光标
不过CCEditBox也有吐槽的地方,安卓上收软键盘后,CCEditbox的输入无法自动收回去,害得我改JAVA源码在输入框下面加了一个OK按钮

楼主能否吐槽一下:无法根据文字和字体大小计算文字宽度?
也无法设定宽度计算文字自动折行后到底占多高

— Begin quote from ____

引用第8楼flysec于2014-01-23 20:09发表的 :
为了避免用奇葩的TextField,我在界面上贴了个图,然后动态插了一个CCEditBox进去。。楼主你可以推广一下这个用法的说,立马有高大上的光标
不过CCEditBox也有吐槽的地方,安卓上收软键盘后,CCEditbox的输入无法自动收回去,害得我改JAVA源码在输入框下面加了一个OK按钮

楼主能否吐槽一下:无法根据文字和字体大小计算文字宽度?
也无法设定宽度计算文字自动折行后到底占多高 http://www.cocoachina.com/bbs/job.php?action=topost&tid=182207&pid=880053

— End quote

人人皆可吐槽!!!你已经在吐槽了,不要否认!

楼主所言极是,你我 都遇到了

5、用户输入完毕必须点击虚拟键盘上的 ‘return’才能撤回键盘。

这一点,IOS上 当我有用户名和密码两个输入框时,用户名(明码)输入完成后点击虚拟键盘上的 ‘return’能撤回键盘

但是,密码(密码)输入完成后点击虚拟键盘上的 ‘return’ 却不能撤回键盘

这个必须吐槽!!!!!

:2: 删除键无效的bug没有吗@

我用回 CCEditBox了 addRender上去

LZ你说到点子上了。。。只能说ccs团队加油吧,不要再败人品了。。。。现在给人的印象是出了一堆功能,每个功能都是半成品。。

其实是很生硬的照搬了IOS里面UIKIT的很多东西,回收键盘和上移原本在OC里面是有代理协议的C++里面只好自己搞了~

楼主 ,求个记住密码功能的代码 急用 毕业设计

用 LocalStorage

我也是认为体验极其不佳,简直不忍直视