0

次の階層を持つアプリを設計しました。

UIViewController
  UIView
    UIScrollView
      UITextField

ViewDidLoad で私がした:

...
tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
    tapGesture.cancelsTouchesInView = NO;
    [self.scrollView addGestureRecognizer:tapGesture];
...

hideKeyboard で私がした:

- (void) hideKeyboard {
    //Hide keyBoard
    [self.view endEditing:YES];
}

一見、問題なく動作しますが、残念ながら問題があります。アプリケーションが実行されているとき、キーボードが期待どおりに表示されている UITextField をクリックできます。UITextField の外側をクリックすると、メソッドhideKeyboardが呼び出され、期待どおりにキーボードが閉じられますが、UITextField をもう一度クリックしようとすると、キーボードは再び表示されません。

私が間違っていることは何ですか?誰でも知っていますか?

4

3 に答える 3

1

ユーザーからのフィードバックが必要になるたびに対処する、非常に一般的な問題です。Apple が今後のフレームワーク リリースにそのような日常的な機能を含めると、非常に役立ちます。

編集中に UITextField と UITextView をキーボードの邪魔にならないように移動する方法については、101 の解決策が提案されています。

  1. UIKeyboardWillShowNotification および UIKeyboardWillHideNotification、または
  2. UITextFieldDelegate デリゲート メソッドを実装し、スーパービューのフレームを調整する、または
  3. UITableView の scrollToRowAtIndexPath:atScrollPosition:animated の使用:

しかし、私が見つけたすべての提案されたソリューションはかなり DIY である傾向があり、それを必要とするビュー コントローラーごとに実装する必要があります。

Michael Tyson の厚意による解決策... キーボードの邪魔にならないようにテキスト フィールドを移動するためのドロップイン ユニバーサル ソリューションGitHub プロジェクト ページ で、サンプル プロジェクトを含むソース ファイルを取得できます。

于 2013-10-10T11:22:47.113 に答える
0

これを試して..

- (void) hideKeyboard 
{
    //Hide keyBoard
    [self.view endEditing:YES];
    [self.scrollView bringSubViewToFront:YourTextField];
}
于 2013-10-09T19:45:50.333 に答える