Remove clear button in UISearchBar

陌路散爱 提交于 2020-01-14 18:59:29

问题


I want to remove the clear button (gray x) from the UISearchBar. I tried to do it like described in this answer, but it doesn't work.

I translated the Objective-C code from the answer and the comment below to following Swift code:

for subview in searchBar.subviews {
        configureSearchBarView(subview as UIView)
}

func configureSearchBarView(view: UIView) {
    for subview in view.subviews {
        self.configureSearchBarView(subview as UIView)
    }
    if subview.conformsToProtocol(UITextInputTraits) {
        var clearView = view as UITextField
        clearView.clearButtonMode = UITextFieldViewMode.Never
    }
}

Unfortunatly this doesn't remove the clear button.

Another answer suggests to work with appearanceWhenContainedIn, but this method doesn't seem to be implemented in Swift.

Any ideas?


回答1:


Swift

I found a better way that completely removes the button, using clearButtonMode = .never

let searchBarStyle = searchBar.value(forKey: "searchField") as? UITextField
searchBarStyle?.clearButtonMode = .never

Set the ID for your UISearchBar in the storyboard.




回答2:


I found a solution. It is possible to exchange the clear button with a custom image:

UISearchBar.appearance().setImage(UIImage(named: "emptyImg"), forSearchBarIcon: UISearchBarIcon.Clear, state: UIControlState.Normal)
UISearchBar.appearance().setImage(UIImage(named: "emptyImg"), forSearchBarIcon: UISearchBarIcon.Clear, state: UIControlState.Highlighted)

emptyImg is an png that contains one white pixel. Found in this answer




回答3:


Swift 5

Tested on iOS 13

As I pointed out in another answer, this is the one liner working for me to make it disappear completely:

searchBar.searchTextField.clearButtonMode = .never

However you may also set it to .whileEditing if you only want it displayed when the user is typing and then make it disappear when the search bar loses focus.



来源:https://stackoverflow.com/questions/25407594/remove-clear-button-in-uisearchbar

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!