我有解決這個問題。這有點哈克,不是很整潔,但它的確有竅門。
由於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
,所以當調用方法DidSelectRowAtIndexPath
時,我還將佔位符設置爲空字符串。
希望這會有所幫助。
來源
2014-09-13 19:46:40
bdv
它不起作用。 – jAckOdE
這是因爲UISearchBarTextField不是搜索欄的直接子視圖。您可以通過遞歸搜索類來檢索它並設置正確的文本對齊方式,但這是不好的做法。如果Apple再次更改類視圖層次結構,它可能會中斷。無論如何,它只會在文本輸入時爲文本設置對齊方式。佔位符仍然居中,圖標仍然左對齊。 – Ash
我在獲取子視圖之前遞歸地做了子視圖,直到我到達textView。但正如@Ash所說,未來可能會破裂。 –