我在UISearchBar
中有UITableView
作为表格标题。当我按UISearchBar
开始搜索时,正在触发此方法
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
代表UISearchDisplayController
。
但结果就是这样;
正如你所看到的,没有光标,我可以开始输入和搜索,一切正常。此外,它仅在iOS 7中不可见。但是,使用iOS 6.1和iOS 7.1 Beta 3,我可以看到光标。那么如何才能使UISearchBar光标可见或如何在我的UISearchBar中添加光标?
答案 0 :(得分:11)
搜索栏中的光标从搜索栏中获取颜色 - >查看 - >色彩属性。 在您的情况下,它被设置为白色,因此它变得不可见。
答案 1 :(得分:8)
尝试使用
-(void)searchDisplayControllerWillBeginSearch:(UISearchDisplayController *)controller
{
self.navigationItem.titleView.tintColor = [UIColor blueColor];
}
希望这会对你有所帮助
答案 2 :(得分:7)
尝试使用UIAppearance设置文本字段色调
[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor: [UIColor darkGrayColor]];
答案 3 :(得分:3)
如果您希望光标和取消按钮为不同的颜色......
首先在情节提要编辑器中设置视图的色调颜色(不是条纹色调),它将同时应用于光标和取消按钮。
要使光标成为不同的颜色,您需要以编程方式进行操作。文本字段在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)
}
}
最终结果如下:
答案 4 :(得分:2)
试试看,只需一行代码即可解决问题,将光标 tintColor 属性从白色更改为蓝色。
searchBar.tintColor = [UIColor blueColor];
希望这对某人有帮助。
答案 5 :(得分:1)
您的光标为白色,因为UISearchBar上的tintColor属性设置为白色。
如果你想取消btn为白色,但光标为黑色你可以使用:
UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = .black