4

我的主 ViewController 上有一个 UISearchBar。这个搜索栏下方是一张地图,所以我认为我需要第二个 ViewController 专门用于搜索。

我目前的方法是在我的主 ViewController 上的搜索栏中添加一个 uitapgesturerecognizer ,这样当用户点击搜索栏时,他们就会无缝地重定向到第二个视图

我的代码:

UITapGestureRecognizer *singleFingerTap =
[[UITapGestureRecognizer alloc] initWithTarget:self
                                                     action:@selector(segueToSearch:)];

[searchBar addGestureRecognizer:singleFingerTap];

- (IBAction)segueToSearch:(id)sender {
    NSLog(@"about to segue");
    }

这在我这样做时有效,singleFingerTap.numberOfTapsRequired = 2但显然我希望它只需轻轻一按即可工作。

我的方法有效吗?如果是,有什么问题吗?或者有其他方法可以做到这一点吗?

4

2 回答 2

12

UISearchBar有一个UISearchbarDelegate协议,您可以使用该协议在用户尝试编辑输入字段时获得通知。

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
   // here you open the viewController
   return NO;
}
于 2013-06-23T17:01:31.707 回答
1

就像评论中提到的其他人一样,您最好为您的搜索指定一个单独的场景,因为它在这里没有多大意义。也许你可以制作一个按钮,将你带到下一个场景。或者可能是一个看起来像搜索栏的文本字段。不使用搜索时的搜索栏将毫无意义。

如果您仍然希望在单击搜索栏时执行某些操作,您可以将self(或任何对象)作为搜索栏的代表,并在return NO完成更改为新视图控制器后实施以下方法。

- BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

您可以在此方法中编写代码(您计划在手势选择器中编写代码),并且return NO.

不过,这并不能让它识别您的单击手势识别器。

于 2013-06-23T17:00:52.070 回答