我遇到了UISearchBar
最奇怪的显示错误
这是我的代码在另一个应用程序中完美运行。 (我在代码中创建搜索栏,因为xib文件不可行。)
searchBar = [[UISearchBar alloc] initWithFrame:
CGRectMake(0, 0, self.tableView.frame.size.width, 44)];
searchBar.delegate = self;
searchController = [[UISearchDisplayController alloc]
initWithSearchBar:searchBar contentsController:self];
searchController.delegate = self;
searchController.searchResultsDataSource = self;
searchController.searchResultsDelegate = self;
self.tableView.tableHeaderView = searchBar;
搜索功能等正常。但奇怪的是,搜索栏在设备和模拟器上都是这样的:
searchBar.placeholder
或searchBar.prompt
设置为@""
或nil
不会删除此“搜索”占位符。 (但是,a
searchBar.placeholder = @"FooBar";
有任何帮助吗?最迫切的问题是让文本在右边。
答案 0 :(得分:19)
覆盖(CGRect)editingRectForBounds:(CGRect)bounds
或- (CGRect)textRectForBounds:(CGRect)bounds
可能会导致此行为。您是否更改了应用中其他位置UITextField
类别中的任何一个?这样做的目的可能是在文本字段中添加填充(可以使用不可见的leftView
来完成)。在这种情况下,您的自定义“填充”将应用于UISearchBar
文本字段。
UITextField
上的此类别也会导致您的应用在初始化使用UITextField
的框架类时崩溃,例如MFMailComposeViewController
,因此出于多种原因这是个坏主意。< / p>