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

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

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar

для UISearchDisplayController.

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

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


person Kemal Can Kaynak    schedule 30.01.2014    source источник
comment
Есть ли шанс, что вы устанавливаете tintColor где-то, пытаясь изменить цвет обертки пользовательского интерфейса? Если это так, это может вызвать проблему с курсором, которую вы видите (потенциальное решение).   -  person patridge    schedule 13.03.2014


Ответы (6)


Курсор в строке поиска получает цвет от свойства Search Bar -> View -> Tint Color. В вашем случае он установлен на белый цвет, поэтому он становится невидимым.

person Tomas M    schedule 04.03.2014
comment
В нормальном состоянии, вы правы, но это не работает для меня. Я решил эту проблему, создав оригинальный iOS SearchBar. - person Kemal Can Kaynak; 10.03.2014
comment
Если вы хотите изменить только цвет курсора, вы можете использовать это: UITextField.appearance(whenContainedInInstancesOf: [UISearchBar.self]).tintColor = .black - person Radek Wilczak; 16.02.2018

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

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

}

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

person pulkit    schedule 05.05.2014

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

[[UITextField appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor: [UIColor darkGrayColor]];
person Yatheesha    schedule 13.07.2015
comment
Что эквивалентно быстрому? - person Satyam; 14.07.2017

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


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

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 с курсором другого цвета и кнопкой отмены.

person Derek Soike    schedule 24.02.2017

Попробуйте это, это всего лишь одна строка кода для решения вашей проблемы. Измените свойство курсора tintColor с белого на синий.

  searchBar.tintColor = [UIColor blueColor];

Надеюсь, это поможет кому-то.

person Jaywant Khedkar    schedule 16.08.2018

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

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

person Radek Wilczak    schedule 16.02.2018