2017-03-18 11 views
1

私はthis postという素晴らしい指示に従って、キャンセルボタンを表示していない検索バーと検索コントローラをサブクラス化しました。ただし、編集を開始すると、検索バーにカーソルが表示されなくなりました。私は、さまざまなデリゲートメソッドで、多くの投稿で答えとして見た検索バーの色合いを設定しようとしました。色合いは技術的に正しく設定されています。私の検索コントローラを標準のUISearchControllerに設定してテストするとわかります。しかし、私がサブクラスSearchControllerWithoutCancelにセットすると、すぐにカーソルが消えます。ここでキャンセルボタンが隠されているときにカーソルが消える

は私のサブクラスです:

class SearchBarWithoutCancel: UISearchBar { 
override func layoutSubviews() { 
    super.layoutSubviews() 
    setShowsCancelButton(false, animated: false) 
} 

}

クラスSearchControllerWithoutCancel:ここUISearchController、UISearchBarDelegate {

lazy var _searchBar: SearchBarWithoutCancel = { 
    [unowned self] in 
    let result = SearchBarWithoutCancel(frame: .zero) 
    result.delegate = self 

    return result 
    }() 

override var searchBar: UISearchBar { 
    get { 
     return _searchBar 
    } 
} 

}

そして私はviewDidLoad()から呼び出す私のaddSearchController方法です

func addSearchController() { 
    searchController.searchResultsUpdater = self 

    searchController.dimsBackgroundDuringPresentation = false 
    searchController.hidesNavigationBarDuringPresentation = false 

    searchController.searchBar.autocapitalizationType = .none 
    searchController.searchBar.searchBarStyle = .minimal 
    searchController.searchBar.tintColor = UIColor.black 

    self.definesPresentationContext = true 

    tableView.tableHeaderView = searchController.searchBar 
} 

誰もこれまでに遭遇したことはありますか?感謝:)

答えて

0

確かにキャンセルボタンが隠されている、カーソルの色合いの色がリセット自体

あなたSearchBarWithoutCancelでlayoutSubviewsを削除してsetShowsCancelButton上書き:

override func setShowsCancelButton(_ showsCancelButton: Bool, animated: Bool) { 
    //nothing 
}} 

Objective-Cのバージョン

-(void) setShowsCancelButton:(BOOL)show animated:(BOOL)animated 
{ 
    //nothing 
} 
関連する問題