2016-07-27 6 views
1

私のアプリケーションには検索バーがありますが、シミュレータで実行すると検索フィールドに入力することができません。UISearchBarの実装

私のコードでは、検索バーはxibファイルで作成され、マップビューのサブビューとして(プログラムで)追加され、マップの上に配置されます。私の検索バーのための私のコードの一部:

[mapView addSubview: searchBar]; 
searchBar.placeholder = @"Search or Place Pin"; 
searchBar.searchBarStyle = UISearchBarStyleProminent; 
searchBar.backgroundImage =[[UIImage alloc]init]; 
searchBar.barTintColor = [UIColor clearColor]; 
searchBar.delegate = self; 

-(void) viewDidAppear:(BOOL)animated{ 
... 
[searchBar becomeFirstResponder]; 
BOOL searchBarIsResponding = [searchBar becomeFirstResponder]; 
NSLog(@"first responder: %d", searchBarIsResponding); 

....   
- (void) searchBarButtonClicked:(UISearchBar *)searchBar 
{ 
[self searchCoordinatesForAddress:[searchBar text]]; 
[searchBar resignFirstResponder]; 
} 

編集: は、私はそれが検索バーにそのタッチを渡していないのMapViewの問題だったかどうかを確認するためにNOへのMapViewのuserInteractionEnabledを設定しようとしたが、私はまだで入力することができませんでしたsearchBar、私はそれが問題だとは思わない。

+0

デリゲート=自己を使用している場合は不要な検索バーにタップジェスチャーを追加しようとしています。 UISearchBarDelegateをインクルードし、関連するメソッドをオーバーライドします。 しかし、ジェスチャをタップしたい場合でも、パラメータなしでセレクタを割り当てていて、セレクタを割り当てていないのに間違ったセレクタを使用していますが、 - (void)searchBarButtonClicked:(UISearchBar *)searchBar – SHN

+0

元はタップジェスチャがありませんでした。それでも私は検索バーに入力することができませんでした。タップジェスチャーを削除して元のコードに戻すと、何を変更する必要がありますか?関連するメソッドをオーバーライドするとどういう意味ですか? – Matt

答えて

0

mapViewが別のビューのサブビューである場合は、そのビューのサブビューとして検索バーを配置します。それ以外の場合は、searchBarが最初のレスポンダになっているかどうかを確認しましたか?マップビューがサブビューに触れていないため、検索バーが最初のレスポンダになっていないため、タイプができません。私はこれが助けてくれることを願っています。悲しいことにまだコメントできないので、私は仮定に基づいてこの回答を作成しなければなりませんでした。

+0

これは、マップビューにタップジェスチャ認識機能があり、検索バーにタッチする必要があることを意味しますか?現在のところmapviewにはタップジェスチャ認識機能がありません – Matt

+0

ドキュメントを正しく理解していれば - いいえ。 mapViewがタップを取得すると、それを認識してそれに応じて処理します。この場合、タップされたsearchBarに指示する必要があります。また、認識されている現在のジェスチャは、キーボードをタップすると、最初のレスポンダを再び辞めるように指示するので、キーボードの表示を無効にするようです。ジェスチャ認識機能を削除し、テキストを入力できるかどうかを確認することをお勧めします。そうでない場合は、searchBarが最初のレスポンダになったかどうかをチェックする関数を追加します。ところで、あなたは 'UISearchBarDelegate'プロトコルを実装していますか? – jniegsch

+0

検索バーのタップジェスチャ認識機能を削除しましたが、まだ入力できません。 searchBarが最初のレスポンダになったかどうかを調べる関数を追加しようとします。いいえ、私はUISearchBarDelegateプロトコルを実装していません... – Matt

関連する問題