Apf*_*aft 3 uisearchbar ios swift
我想从UISearchBar中删除清除按钮(灰色x)。我试图按照此答案中的说明进行操作,但是它不起作用。
我将Objective-C代码从下面的答案和注释翻译为以下Swift代码:
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
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不会删除清除按钮。
另一个答案建议与使用appearanceWhenContainedIn,但是此方法似乎未在Swift中实现。
有任何想法吗?
在 iOS 13 上测试
正如我在另一个答案中指出的那样,这是为我工作的一个班轮,可以让它完全消失:
searchBar.searchTextField.clearButtonMode = .never
Run Code Online (Sandbox Code Playgroud)
.whileEditing但是,如果您只想在用户键入时显示它,然后在搜索栏失去焦点时使其消失,您也可以将其设置为。
我找到了解决方案。可以用自定义图像交换清除按钮:
UISearchBar.appearance().setImage(UIImage(named: "emptyImg"), forSearchBarIcon: UISearchBarIcon.Clear, state: UIControlState.Normal)
UISearchBar.appearance().setImage(UIImage(named: "emptyImg"), forSearchBarIcon: UISearchBarIcon.Clear, state: UIControlState.Highlighted)
Run Code Online (Sandbox Code Playgroud)
emptyImg是一个包含一个白色像素的 png。在这个答案中找到
迅速
我发现了一种更好的方法,可以使用clearButtonMode = .never完全删除按钮
let searchBarStyle = searchBar.value(forKey: "searchField") as? UITextField
searchBarStyle?.clearButtonMode = .never
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3272 次 |
| 最近记录: |