0

私のiPhoneアプリ(Xcodeの「シングルビューアプリケーション」に基づく)には、ユーザーが編集できるようにするUITextView(たとえば、myTextView)があります。編集可能に設定していましたが、すべて正常に機能していました(becomeFirstResponderを呼び出す必要もありませんでした)。

次に、それを別のUIWindow(たとえば、newWindow)に移動しました((シングルビューアプリの)self.windowと呼ばれるmain / root / keyの上に)。

しかし、UITextViewをクリックしても、キーボードが表示されません。

これを行うと、すべてが機能します。

[myTextView setEditable:YES];
[myTextViewbecomeFirstResponder]; //醜い...そして私はそれを必要としないが、念のためにそれを追加した...
[self.window addSubview:newWindow];

しかし、キーボードはすぐに表示されます(becomeFirstResponderを設定したため)。これは適切ではありません。しかし、becomeFirstResponder行を削除すると、キーボードがまったく表示されません。

[self.window addSubview:newWindow]行を上に移動すると、何をしてもキーボードがアクティブになりません...

[self.window addSubview:newWindow]; //これが本来あるべき姿です...しかし、
[myTextView setEditable:YES];
[myTextViewbecomeFirstResponder]; //これを入力しても、機能しません:-(

[newWindowmakeKeyAndVisible]は何も試しませんでした。タッチデリゲートを追加してUITextViewでタッチ(またはジェスチャ)を検出しようとしましたが、機能します(含まれているNSLogメッセージが表示されます)が、キーボードがありません。newWindowの上に(メインウィンドウの)別のフィールドを追加しようとしましたが(メインウィンドウ要素が上になるように)、それでも運がありません...

私は何が欠けていますか?

4

1 に答える 1

3

UIWindow をサブビューとして追加しないでください。代わりに、-[UIWindow makeKeyAndVisible] を呼び出すか、キー イベントを受け取りたくない場合は -[UIWindow setHidden:NO] を呼び出して、ウィンドウを表示します。

ただし、複数のウィンドウを使用する必要があることはまれです。通常の UIView add を使用するだけで、多くの場合、サブビューとしてそれを追加できます。

編集:「画面への割り当て」について、以前に紛らわしい発言がありました。UIWindow には、メイン画面以外の別の画面にウィンドウを表示する場合に割り当てることができるプロパティ「screen」があります。ただし、ユースケースではそれを気にする必要はありません。

于 2012-04-25T11:11:43.923 に答える