Cod*_*odo 20 uisearchbar ios ios7
在应该在iOS 6和iOS 7上运行的应用程序中,如果应用程序在iOS 7上运行,导航栏中嵌入的搜索栏的取消按钮将不再显示.在iOS 6上,它可以正常工作.
搜索栏位于导航栏的标题视图中,如果搜索栏成为第一个响应者,则应显示取消按钮:
IOS 7
iOS 6
在一个独立的测试用例中,代码非常简单:
@interface MyViewController : UITableViewController<UISearchBarDelegate>
@property (nonatomic) IBOutlet UISearchBar* searchBar;
@end
@implementation MyViewController
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.titleView = self.searchBar;
}
- (void) searchBarTextDidBeginEditing: (UISearchBar*) searchBar {
[searchBar setShowsCancelButton: YES animated: YES];
}
@end
Run Code Online (Sandbox Code Playgroud)
这是我在文档中遗漏的iOS 7中的故意更改吗?如果是的话,应该是什么选择?
如果没有,我的代码中是否犯了错误?
Sam*_*cer 14
看起来你正确地做了一切,但显然Apple已经改变了iOS 7中的一些东西.根据 iOS 7 中的这个问题,取消按钮不会出现在UISearchBar
嵌入式中UINavigationBar
.
根据开发人员文档,该showsCancelButton
属性可能与该setShowsCancelButton:Animated
方法的效果略有不同.试着这样做:
searchBar.showsCancelButton = YES;
[searchBar setShowsCancelButton:YES animated:YES];
Run Code Online (Sandbox Code Playgroud)
我不确定这是否会产生任何影响.您还可以尝试将代码放在不同的委托方法中:
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar; // return NO to not become first responder
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar; // called when text starts editing
Run Code Online (Sandbox Code Playgroud)
您可能还想查看iOS 7更改日志.看起来Apple改变了行为或者UISearchDisplayController
/ UISearchBar
当添加到a时UINavigationBar
.看看UIKit部分下的最后一个要点(虽然不清楚究竟发生了什么变化).
您可能还想尝试使用UISerachDisplayController
.更容易的是将其嵌入UISearchBar
到标题中UITableView
.
And*_*iev 12
我只是通过添加rightBarButtonItem来解决这个问题很简单:)
self.navigationItem.titleView = self.searchBar;
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Cancel", nil) style:UIBarButtonItemStylePlain target:self action:@selector(didClickCancelButton:)] autorelease];
Run Code Online (Sandbox Code Playgroud)
但是你必须检查当前的iOS版本是否> = 7.0,否则你会得到两个"取消"按钮..
BTW此方法允许您使用"取消"按钮,该按钮始终启用
归档时间: |
|
查看次数: |
18270 次 |
最近记录: |