2014-01-30 95 views
11

我有UISearchBarUITableView作爲表頭。當我推UISearchBar的開始搜索,這種方法被觸發在UISearchBar中隱藏遊標iOS 7

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar 

UISearchDisplayController

但結果是這樣的;

正如你所看到的,沒有光標,我就可以開始打字和搜索,一切工作正常。此外,它僅在iOS 7中不可見。但是,在iOS 6.1和iOS 7.1 Beta 3中,我可以看到光標。那麼如何讓UISearchBar遊標可見,或者如何在我的UISearchBar中添加遊標呢?

+0

任何機會,你設置'tintColor'地方試圖改變包裝UI的顏色嗎?如果是這樣,那可能會導致遊標問題([潛在解決方案](http://stackoverflow.com/a/22386608/48700))。 – patridge

回答

11

搜索欄中的光標從搜索欄 - >視圖 - >色調屬性中獲取顏色。 就你而言,它被設置爲白色,因此它變得不可見。與

-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller 
{ 
    self.navigationItem.titleView.tintColor = [UIColor blueColor]; 

} 

希望使用

+0

在正常情況下,你是對的,但它不適合我。我通過創建原始iOS SearchBar解決了這個問題。 –

+0

如果你只想改變光標顏色,你可以使用: UITextField。外觀(whenContainedInInstancesOf:[UISearchBar.self])。tintColor = .black –

5

請嘗試使用UIAppearance

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor: [UIColor darkGrayColor]]; 
+0

什麼是等效的swift? – Satyam

1

文本字段色調的顏色。如果你想光標和取消按鈕是不同的顏色...


首先在故事板編輯器中設置視圖的色調顏色(不是條形色調),它將應用於光標和取消按鈕。

UISearchBar in storyboard editor with simulator.


要使光標不同的顏色,你需要以編程方式做到這一點。文本字段在searchBar的子視圖中嵌套了幾個級別。使用此setTextFieldTintColor輔助函數遍歷所有子視圖。

@IBOutlet weak var searchBar: UISearchBar! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // set tint color for all subviews in searchBar that are of type UITextField 
    setTextFieldTintColor(to: UIColor.darkText, for: searchBar) 
}  

func setTextFieldTintColor(to color: UIColor, for view: UIView) { 
    if view is UITextField { 
     view.tintColor = color 
    } 
    for subview in view.subviews { 
     setTextFieldTintColor(to: color, for: subview) 
    } 
} 

最終的結果是這樣的:因爲你的UISearchBar屬性tintColor設置爲白色

UISearchBar with different colored cursor and cancel button.

0

你的光標是白色的。

如果你想取消BTN是白色的,但光標被黑,你可以使用: UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = .black