为什么 - [UIKeyInput hasText]总是为UITextField返回NO? 这是UIKit的错误吗?

例如,以下测试失败:

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectZero];
textField.text = @"has text";
STAssertTrue([textField hasText], @"any text is text.");

===============>>#1 票数:4 已采纳

UITextField通过UITextInput协议实现UIKeyInput,该协议指出:

UIKeyInput protocol-已实现以获取插入点处文本输入和删除的功能。

(来自: http//developer.apple.com/library/IOs/#documentation/UIKit/Reference/UITextInput_Protocol/Reference/Reference.html

正如Mattias上面提到的,它与后备存储有很大关系,主要用于通过系统键盘输入。

在您的示例中,您正在直接操作属性并通过键盘绕过输入。 通过给出第一响应者字段,将显示键盘并且hasText将按预期返回YES。

  ask by ma11hew28 translate from so

未解决问题?本站智能推荐:

1回复

UITextfield子类不响应insertKey:UIKeyInput协议的方法

我想观察UITextfield子类中的文本输入。 为此,我试图在该子类中实现UIKeyInput协议方法。 但是从来不会调用insertText:和hasText方法。 但是将调用deleteBackward方法。 您知道为什么不调用这些方法吗? 当我使用UIView子类测试相同的场景
9回复

如何在iOS 8中检测UITextField上的删除键?

我已经将UITextField子类化并实现了UIKeyInput协议的deleteBackward方法来检测被按下的退格。 这适用于iOS 7,但不适用于iOS 8。 当我按退格键时,不再在UITextField上调用deleteBackward。 我已经检查了文档和发行说明,没有
1回复

UITextField的子类

我想子类化UITextField并有一个方法来设置最大字符数。 允许的。 在此子类的init方法中,我尝试将inputDelegate设置为self,但不会触发回调。 而且这只是iOS 5的事情。 我的问题是,什么技术或通知会允许我在敲击键时触发事件,这样我就不必在视图控制器中实现UIT
2回复

UITextfield,其行为类似于email.app中的“ to:” UItextfield

我想产生类似以下效果:苹果电子邮件应用程序中的UITextfield。 如果完整输入了电子邮件地址,则将其替换为圆角的元素。 我如何实现这样的行为?
3回复

UITextField标准样式以编程方式

当我使用情节UITextField创建UITextField ,其外观类似于下图。 但是,当我以编程方式创建UITextField它绝对没有样式。 我知道我可以将自定义样式应用于文本字段,但是在以编程方式创建文本字段时,是否有一种简单的方法来获得此标准样式?
2回复

如何在UITableViewCell中嵌套UITextField?

我刚刚开始研究我的第一个iOS应用程序。 在日历应用程序中添加事件时,如何创建包含UITextField的UITableViewCell ,该UITextField看起来像Title和Location字段? 这样做有没有方便的第三方组件? 我可以看到表视图有两个分组的项目,文本字段有一
8回复

UITextField模糊文本

即使使用标准字体大小,我也遇到了UITextField文本被模糊/消除锯齿的问题。 当控件是第一响应者时,文本将显得清晰,但在失去焦点时再次模糊: (来源: mikeweller.com ) 有人知道如何解决这个问题吗?
2回复

为什么UITextField的窗口为零?

我正在尝试为一系列UITextField实现“上一个”,“下一个”和“完成”按钮,每个按钮都包含在分组的UITableViewCell中的UITableView 。 我坚持使用NSMutableArray的UITextFields ,并保留一个指向当前处于活动状态的UITextField的整数
1回复

如何将UIKeyInput协议与UIWebView控件一起使用?

如何将UIKeyInput协议与UIWebView控件一起使用? (我正在尝试解决退格键问题:它可以在外部键盘上使用,但不能在iOS键盘上删除超过1个字符,并且在两个键盘上都输入了字符后可以使用。)
3回复

什么是更改UITextView的键盘返回按钮的正确方法

因此,我一直在处理一个小的需求,这个需求花了我很多时间,而UIKit中的小的需求似乎有时会这样做: 当用户输入的密码长于3个字符时,您会将键盘更改为具有完成按钮。 很简单...似乎直到编辑结束才触发KVO,也没有调用textFieldDidEndEditing:委托方法。 好