2012-03-26 7 views
-1

簡単な質問:「完了」キーが「検索」であれば、どうすれば私のテキストフィールドを辞めることができますか?基本的に、ユーザーが検索したいが、代わりにキャンセルしたいしない場合、私は何をしますか...戻るボタンでresignFirstResponder for UITextField for search returnkey

おかげ

+0

ナビゲーションバーにバーボタンを置くと、最初のレスポンダの辞退だけでキーボードが非表示になります。 –

+0

同じような質問:-http://stackoverflow.com/questions/8558339/how-i-dismiss-keyboard-on-top-search-button-on-keyboard-regarding-uisearchba – Leena

答えて

2

:検索バーのためのキャンセルボタンとは、実装する必要があり、このSearchBar delegate

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar 
{ 
    isSearching = NO; //This is a flag which specifies if searching is going on or not. 
    searchBar.text = @""; //Clears out search bar text 
    [self resetSearch]; //Reset search resets all the flags and variables. 
    [self.leadsTable reloadData]; //Reloads the tableView 
    [searchBar resignFirstResponder]; //Resigns responder from Search bar 
} 

これは、ユーザーが検索したくない場合は、応答を辞任する適切な方法です。

UISearchBarで組み込みのキャンセルボタンを追加する方法を見てください。プロパティをチェック(レッドアローのハイライト)

enter image description here

EDIT "ショーは、ボタンキャンセル":

STEP-1:条件付き チェックあなたのテキストフィールドのテキストが空白であるかどうかを?もしそうなら、TextFieldのresignFirstResponder。

txtField.delegate = self; 

それともFile's OwnerへのTextFieldのdelegateを接続することにより、インターフェイスビルダーから同じことを行うことができます:あなたは、コードを使用してUITextFieldのためselfに委任を設定する必要があります。

ステップ2:このデリゲートメソッドを実装する必要があります。

- (BOOL)textFieldShouldReturn:(UITextField *)textField { 
    if([textField.text isEqualToString:@""]) 
    { 
     [textField resignFirstResponder]; 
    } 
    return YES; 
} 

EDIT-1:

あなたはボタンのクリックイベントを書き込むことができます。

今、あなたがそれをやったら

を 'キャンセル' ラベルされた1つのバーのボタンでUIToolbarを作成UIToolBarの場合:

-(IBAction)cancelClicked:(id)sender 
{ 
    [txtField resignFirstResponder]; 
} 

O NCEあなたが今だけ書くことができることを行っている:

txtField.inputAccessoryView = toolbarOutlet; 

ホープこれはあなたを助けます。

+0

これは私が探しているのはtextFieldがUITableViewセルではなく、UISearchBarの内部にあるからです。あなたの答えをありがとう。 – Apollo

+0

@ derek.lo:UITextFieldを持つ特定の理由で、UITableViewCellの下にUISearchバーはありませんか? –

+0

テキストフィールドは、テーブルビュー内の結果を検索するためのものではなく、DB内のアイテムの要求を送信するためのものです。したがって、セル内で見た目が良くなります。 – Apollo

1

テキストが議論とは無関係です。返信ボタンを押さずにファーストレスポンダーを辞任する方法を知りたいのですが、いくつかの方法があります。

  1. テキストフィールドのinputAccessoryViewを使用すると、キーボード上のツールバーに別のキャンセルボタンが表示されます。
  2. フィールドのスーパービューでタップジェスチャ認識機能を使用して、ユーザーがフィールド外をタップするタイミングを認識し、[self.view endEditing:YES]selfはビューコントローラ)を呼び出します。これにより、最初のレスポンダーが辞任します。
  3. 編集中にキャンセルバーボタン項目の現在のビューコントローラーのrightBarButtonItemをスワップアウトします(その時点で画面にUINavigationBarがあることが前提です)。編集が終了したら、通常の右バーボタン項目にスワップバックします。あなたが使用することができます
+0

うん、これは私が必要なものです知っている。ありがとう@warrenm – Apollo