为什么没有调用resignFirstResponder()的特定原因?

时间:2019-07-07 01:54:01

标签: ios swift xcode search uisearchbar

我正在尝试在Xcode中实现一个名为“ shouldHideSearchKeyboard”的方法,该方法仅在按下回车键时隐藏键盘。问题在于,不仅没有调用resignFirstResponder(),甚至没有调用shouldHideSearchKeyboard,这表明发生了严重错误。我对此感到困惑,因为(1)我已经尝试过有关网站上提出的此问题的所有解决方案,并且(2)除了没有问题的文本字段之外,我实现了完全相同的功能。 谢谢!

我已仔细检查以确保已将UISearchBarDelegate添加到我的SearchTab类中,在该方法中包括一个UISearchBar作为参数,使IB出口将搜索栏连接到我的代码,并将出口的委托设置为自。尽管如此,从不调用shouldHideSearchkeyboard。

@IBOutlet weak var IB_SearchBar: UISearchBar!
class SearchTab: UIViewController, UISearchBarDelegate {
   override func viewDidLoad()
{
   super.viewDidLoad()
   self.IB_SearchBar.delegate = self
}

func hideSearchBarKeyboard(_ searchBar: UISearchBar) -> Bool
    {
// Neither resignation nor print statement gets called
        searchBar.resignFirstResponder()
        print("Search bar entry")
return true
    }

}

2 个答案:

答案 0 :(得分:0)

pls使用标准苹果通知。添加一个委托并使用Apple委托功能:

在didLoad中设置了委托...

//MARK: UISearchBarDelegate


func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) // called when text changes (including clear) {
        self.reload.....

}

答案 1 :(得分:-1)

如果searchBar是您可以使用的唯一响应者;

override var canBecomeFirstResponder: Bool {
        return true
    }

view.endEditing(true)而不是searchBar.resignFirstResponder()