Подтвердить что ты не робот

Курсор невидимый в UISearchBar iOS 7

У меня UISearchBar в UITableView как заголовок таблицы. Когда я нажимаю UISearchBar для начала поиска, этот метод запускается

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

для UISearchDisplayController.

Но результат такой:

Как вы можете видеть, курсора нет, я могу начать печатать и искать, все работает нормально. Также он невидим только в iOS 7. Однако с iOS 6.1 и iOS 7.1 Beta 3 я мог видеть курсор. Итак, как я могу сделать курсор UISearchBar видимым или как добавить курсор в свой UISearchBar?

4b9b3361

Ответ 1

Курсор в строке поиска принимает цвет из панели поиска → Вид → Свойство цвета оттенка. В вашем случае он имеет белый цвет, поэтому он становится невидимым.

Ответ 2

попробуйте использовать с помощью

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

}

надеюсь, что это поможет вам

Ответ 3

Попробуйте установить цвет оттенка текстового поля, используя UIAppearance

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

Ответ 4

Если вы хотите, чтобы кнопка курсора и отмены была разных цветов...


Начните с установки цвета оттенка представления (не оттенка) в редакторе раскадровки, который будет применяться как к курсору, так и к кнопке отмены.

UISearchBar в редакторе раскадровки с симулятором.


Чтобы сделать курсор другого цвета, вам нужно сделать это программно. Текстовое поле вложенных уровней в вложенные объекты 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.

Ответ 5

Ваш курсор белый, потому что свойство tintColor на UISearchBar установлено на белый.

Если вы хотите, чтобы отменить btn быть белым, а курсор - черным, вы можете использовать: UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = .black