开始编辑UISearchbar会更改UINavigationbar颜色

问题描述 投票:1回答:1

在viewcontroller中,我有searchbar和tableview see screenshot

当我点击搜索栏时它将导航栏颜色更改为黑色我已经更改了导航栏颜色,但它仍然会更改导航栏颜色

这是当我点击搜索栏see screenshot时会发生什么

这是代码:

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
    self.setTitle("Add users", showBackButton: false, navBGColor: .white, navTitleColor: .black)
}

func setTitle(_ titleStr: String = "", showBackButton: Bool = true, navBGColor: UIColor = UIColor.white, navTitleColor: UIColor = UIColor.black) {

    self.title = titleStr

    self.hideNavigationBar(false)
    self.showBackButton(showBackButton, navTitleColor == .black)

    self.changeNavBarAppearance(navBGColor, navTitleColor)
}
func changeNavBarAppearance(_ navColor: UIColor, _ titleColor: UIColor = UIColor.white) {

    let titleTextAttribute = [NSAttributedStringKey.font:R.Fonts.AppNavBarFont,
                              NSAttributedStringKey.foregroundColor : titleColor]

    self.navigationController?.navigationBar.tintColor = titleColor
    self.navigationController?.navigationBar.barTintColor = navColor
    self.navigationController?.navigationBar.isTranslucent = false
    self.navigationController?.navigationBar.titleTextAttributes = titleTextAttribute
    self.navigationController?.navigationBar.shadowImage = UIImage()
}
ios swift xcode uinavigationbar uisearchbar
1个回答
1
投票

当我在viewcontroller中添加键盘通知观察器时,我遇到了类似的问题。

我在viewcontroller中设置了keyboardWillShow通知观察器,然后我在其上推了另一个viewcontroller,而没有删除键盘通知观察器。

当我点击搜索栏时,它会将通知发送到上一个视图控制器,在该视图控制器上按下这个新的视图控制器,即调用keyboardWillShow方法,我正在更改导航栏颜色。

我删除了键盘的通知观察者并解决了问题

© www.soinside.com 2019 - 2024. All rights reserved.