我有办法解决这个问题。它有点hacky而且不是很整洁,但它确实有用。
由于UISearchBar
它本身不允许您编辑占位符,因此我在其UITextField
下方设置了一个并通过执行以下操作将其禁用:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if([touch.view isDescendantOfView:self.placeHolderTextField]){
return NO;
}
return YES;
}
注意:不要忘记包含<UIGestureRecognizerDelegate>
在您的 .h 文件中。但是,如果这不起作用,您可以随时使用[self.view sendSubViewToBack:self.placeholderTextField];
接下来,我刚刚设置了要在其上显示占位符以及何时不显示的事件。在 中viewDidLoad
,我只是在打电话self.placeHolderTextFiew.placeholder = @"search"
而在
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if(searchText.length > 0){
self.placeHolderTextfield.placeholder = @"";
} else{
self.placeHolderTextfield.placeholder = @"search";
}
}
再次注意:确保包含<UISearchBarDelegate>
在您的 .h 文件中以使其正常工作。
我tableView
也在使用 a ,所以当DidSelectRowAtIndexPath
调用该方法时,我还将占位符设置为空字符串。
希望这可以帮助。