1

-[UIKeyInput hasText] が UITextField に対して常に NO を返すのはなぜですか? これは UIKit のバグですか?

たとえば、次のテストは失敗します。

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

1 に答える 1

4

UITextField は、UITextInput プロトコルを介して UIKeyInput を実装します。

UIKeyInput プロトコル - 挿入ポイントでのテキスト入力と削除の機能を取得するために実装されています。

(経由: http://developer.apple.com/library/IOs/#documentation/UIKit/Reference/UITextInput_Protocol/Reference/Reference.html )

Mattias が上で示唆したように、これはバッキング ストアと関係があり、主にシステム キーボードからの入力を目的としています。

あなたの例では、プロパティを直接操作し、キーボードからの入力を回避しています。フィールドにファーストレスポンダを指定すると、キーボードが表示され、hasText は期待どおりに YES を返します。

于 2011-12-11T18:18:40.033 に答える