为什么 - [UIKeyInput hasText]总是为UITextField返回NO?

时间:2011-12-11 17:02:20

标签: iphone ios uikit uitextfield uikeyinput

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

例如,以下测试失败:

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

1 个答案:

答案 0 :(得分:4)

UITextField通过UITextInput协议实现UIKeyInput,该协议声明:

  

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

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

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

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