8

ユーザーが検索バーにフォーカスするとキャンセルボタンを表示する検索バーを実装しました。このために、searchBar.showsCancelButton = YES;私は私のsearchBarTextDidBeginEditing方法で書いています。ではsearchBarSearchButtonClicked、ユーザーが完全なテーブルビューを表示できるように、キーボードを再署名します。

問題: この時点で、検索バーのキャンセル ボタンが反応しません。検索バーが再びフォーカスを取得した場合にのみ応答します。これは検索バーのキャンセル ボタンの既定のプロパティですか、それともコードに何か不足していますか。検索バーにフォーカスを戻さずにキャンセルボタンを使いたい。

4

3 に答える 3

4

はいUISearchBar、キャンセルボタンを反応させることができます。デフォルトでは無効になっていますが、サブビューにアクセスしてから有効にしてキャンセルボタンを設定できます。

for (id object in [mySearchBar subviews])
{
    if ([object isKindOfClass:[UIButton class]])
    {
        UIButton *searchBarCancelBtn = (UIButton*)object;
        [searchBarCancelBtn setEnabled:YES];
    }
}

他のロジックが必要な場合は、この回答に従ってくださいUISearchBar テキスト フィールドのカスタム クリア ボタン

于 2013-02-15T10:43:40.773 に答える
4

これは、検索バーのキャンセル ボタンのデフォルトの動作です。他の機能が必要な場合は、検索バーの cancelbutton プロパティをオフにしUIButtonて、キャンセル ボタンとして使用できます。

于 2013-02-15T07:53:38.863 に答える
3

フォーカスを取得したときのデフォルトの動作だと思いますUISearchBar。その後、キャンセルボタンが有効になります。UISearchBarフォーカスがないときのキャンセルボタンイベントは取得できません。

だからあなたの仕事を達成するための私の提案は、

  • ツールバーを作成する
  • UIBarButtonItemカスタムビューで挿入UISearchBar
  • UIBarButtonItemアクション付きの「キャンセル」という名前の挿入
于 2013-02-15T08:10:59.567 に答える