游标在UISearchBar iOS 7中不可见

时间:2014-01-30 10:27:59

标签: ios7 uisearchbar uisearchdisplaycontroller

我在UISearchBar中有UITableView作为表格标题。当我按UISearchBar开始搜索时,正在触发此方法

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

代表UISearchDisplayController

但结果就是这样;

正如你所看到的,没有光标,我可以开始输入和搜索,一切正常。此外,它仅在iOS 7中不可见。但是,使用iOS 6.1和iOS 7.1 Beta 3,我可以看到光标。那么如何才能使UISearchBar光标可见或如何在我的UISearchBar中添加光标?

6 个答案:

答案 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)

如果您希望光标和取消按钮为不同的颜色......

首先在情节提要编辑器中设置视图的色调颜色(不是条纹色调),它将同时应用于光标和取消按钮。

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 with different colored cursor and cancel button.

答案 4 :(得分:2)

试试看,只需一行代码即可解决问题,将光标 tintColor 属性从白色更改为蓝色。

  searchBar.tintColor = [UIColor blueColor];

希望这对某人有帮助。

答案 5 :(得分:1)

您的光标为白色,因为UISearchBar上的tintColor属性设置为白色。

如果你想取消btn为白色,但光标为黑色你可以使用: UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = .black