【发布时间】:2013-11-22 07:19:40
【问题描述】:
我正在调试我的代码,其中 UISearchBar 的委托方法 searchBarTextDidBeginEditing: 每次点击搜索栏(位于导航栏中)时都会被调用两次。
奇怪的是,只有这个委托方法被调用了两次。其他的在整个过程中只调用一次,这是正确的行为。
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
// called only once
return YES;
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
// called twice every time
[searchBar setShowsCancelButton:YES animated:YES];
}
- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar
{
// called only once
[searchBar setShowsCancelButton:NO animated:YES];
return YES;
}
- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
// called only once
}
知道可能出了什么问题吗?
UISeachrBar 设置在 Storyboard 中,具有正确连接的插座,尽管它没有添加到任何视图中,并且在特定视图控制器的 viewDidLoad 中,以下行将搜索栏添加到导航栏:
self.searchDisplayController.displaysSearchBarInNavigationBar = YES;
我正在使用 Xcode 5.0.1 并在 iOS 7.0.3 模拟器中运行代码。
【问题讨论】:
-
是否有可能有两个搜索栏在彼此之上?
-
我也遇到了这种情况,这似乎是一个 iOS 错误。我用 UITableView 和 UISearchDisplayController 创建了一个空白项目,在导航栏中显示 UISearchBar。以下委托方法被调用两次: -searchBarTextDidBeginEditing: -searchBar:textDidChange: -searchBarCancelButtonClicked:
-
是的,这很奇怪。我也有同样的问题,但我太贪心了,无法以我的评分开始赏金)))
-
我在 Xcode 8.2.1 上也有这个问题:D
标签: ios iphone objective-c cocoa-touch ios7