7

カスタム ビュー ( NotifyView) が追加されてUIWindowおり、閉じるボタン ( から削除されます) が追加されていますUIWindow。このビューは、PUSH 通知が届いたときに追加されます。任意の画面にいる可能性があり、 /didReceiveRemoteNotification を介してキーボードが起動している場合がいくつかあります。この段階でプッシュが来ると、キーボードの後ろにが追加されます。PUSH が受信されたら、キーボードを辞任したいので、次のことができます。UITextfieldUITextviewNotifyViewUIWindow

  • すべてのテキストフィールド/テキストビューを辞任するために通知を投稿しNSNotificaitonCenterます(誰かがいる場合firstResponder)。このために、すべてのコントローラーで現在アクティブなテキストフィールド/テキストビューへのアクティブなポインターを保持する必要があります。

  • AppDelegate で変数を作成し、アクティブな textfields/textviews をそれに割り当て、PUSH に割り当て、PUSH に割り当てresignFirstResponderます。

どちらのソリューションでも、すべてのコントローラーのコードを変更する必要があり、次のようなより一般的なものを探しています。

  • PUSHを受け取ったときにキーボードを画面から簡単に削除できる方法はありますか
  • または、アプリケーションの現在の firstResponder をフェッチして、明示的に再署名することもできます。

これらは一般的なソリューションである可能性があります。

誰かがこの思考プロセスを促進できるか、誰かがこの場合の即時の解決策を持っていると本当に役に立ちます.

4

4 に答える 4

0

デリゲートメソッドでこれを試してください...

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
  [self.view endEditing:YES]; // added this in for case when keyboard was already on screen
  [self editStartDate:textField];
  return NO;
}
于 2013-04-26T09:06:39.780 に答える