実行さsearchBarCancelButtonClicked:
れるコードがあります ユーザーが検索バーから離れた場所をクリックしたときに同じコードを実行したいのですが、キャンセルが必ずしもクリックされているわけではありません。現在のコードは以下のとおりですが、理解できない問題があります。検索バーの下にUIViewを配置しました。クリックすると、必要なメソッドが実行されます。
問題は、検索バーがアクティブな場合、uisearchbar に関連付けられた半透明のビューがビューの上に表示され、ビューをクリックしても検索バーが閉じられるだけで、メソッドが実行されないことです。検索バーが閉じられた後、ビューをクリックするとメソッドが実行されるので、問題ないことがわかります。基本的に、検索バーが最初のレスポンダーである間、ビュー ジェスチャをアクティブにできるようにする必要があります。
- (BOOL)searchBarShouldBeginEditing:(UISearchBar*)searchBar {
UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissSearch:)];
UIView *transparentView = [[UIView alloc]initWithFrame:transparentViewRect];
[transparentView setBackgroundColor:[UIColor blackColor]];
[transparentView addGestureRecognizer:singleTap];
[self.view addSubview:transparentView];
[self.view bringSubviewToFront:transparentView];
return YES;
}
- (void) dismissSearch:(UITapGestureRecognizer *)tapGesture
{
//Run my code
}