为什么 - [UIKeyInput hasText]总是为UITextField返回NO?这是UIKit的错误吗?
例如,以下测试失败:
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectZero];
textField.text = @"has text";
STAssertTrue([textField hasText], @"any text is text.");
答案 0 :(得分:4)
UITextField通过UITextInput协议实现UIKeyInput,该协议声明:
UIKeyInput protocol-已实现以获取文本的功能 插入点处的输入和删除。
正如Mattias上面提到的,它更多地与后备存储有关,主要用于通过系统键盘输入。
在您的示例中,您正在直接操作属性并通过键盘绕过输入。通过给出字段第一响应者,键盘将被显示,并且hasText将按预期返回YES。