首先得遵守UISearchBarDelegate代理協(xié)議;
然后實現(xiàn)- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
這個代理方法较店;
在代理方法中堂氯,加入以下代碼:
searchBar.showsCancelButton = YES;
for (id cencelButton in [searchBar.subviews[0] subviews])
{
if([cencelButton isKindOfClass:[UIButton class]])
{
UIButton *btn = (UIButton *)cencelButton;
[btn setTitle:@"取消" forState:UIControlStateNormal];
}
}
其中酗洒,searchBar.showsCancelButton = YES
是必須的,不然不能把英文的“cancel”改成中文的“取消”智什。
運行試試吧膘流。
2016.07.01更新
在Stackoverflow找到一個更好的方法:
[searchBar setValue("取消", forKey: "_cancelButtonText")];
這種寫法解決了上面那種寫法在彈出取消按鈕時不自然的問題絮缅。
iOS9以后可以這樣寫:
[UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]].title = @"取消";
iOS8也可以這樣寫:
[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTitle:@"取消"];