如何为我的 Swift 应用程序中的每个视图编程不同的键盘处理?
How can I program different keyboard handling for each view in my Swift app?
在我的应用程序的主面板中,我有一个 textView
。当用户按下它时,键盘出现,我必须修改这个面板上的约束,这样键盘就不会覆盖任何东西。为此,我在 class:
的 viewDidLoad
方法中附加了一个观察者
NSNotificationCenter.defaultCenter().addObserver(self, selector:
#selector(keyboardWillChangeFrame),
name: UIKeyboardWillChangeFrameNotification, object: nil)
然后我有一个方法:
func keyboardWillChangeFrame(notification: NSNotification) {
处理一切。
现在,在不同的面板上我想以不同的方式修改我的约束,所以我为此准备了不同的方法:
func keyboardWillChangeFrameInOtherWay(notification: NSNotification) {
现在为了支持该观点,我必须将其附加到观察者身上。但是当我写在 viewDidLoad:
NSNotificationCenter.defaultCenter().addObserver(self, selector:
#selector(keyboardWillChangeFrameInOtherWay), name:
UIKeyboardWillChangeFrameNotification, object: nil)
然后当键盘出现在第二个面板上时 - 两种方法都会触发(从第一个面板和第二个面板)。我如何才能 运行 对特定面板只有一种方法?
我不太清楚你的问题,顺便说一句,你可以访问NSNotification
的object
字段。如果您将一个对象传递给 NSNotificationCenter
那么您将收到它并且您可以执行一种方法或另一种方法。另一种可能是每次观察者都删除和添加,这样拥有 textField 的控制器每次只观察一个...
我会post我的回答,因为我在这里发现了问题,我希望这是处理这个问题的最好方法。我在第一个面板上添加了这段代码:
override func viewDidDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
另外,因为它嵌入在导航控制器中,所以我移动了这个:
NSNotificationCenter.defaultCenter().addObserver(self, selector:
#selector(keyboardWillChangeFrame),
name: UIKeyboardWillChangeFrameNotification, object: nil)
到viewWillAppear
,现在工作正常。
在我的应用程序的主面板中,我有一个 textView
。当用户按下它时,键盘出现,我必须修改这个面板上的约束,这样键盘就不会覆盖任何东西。为此,我在 class:
viewDidLoad
方法中附加了一个观察者
NSNotificationCenter.defaultCenter().addObserver(self, selector:
#selector(keyboardWillChangeFrame),
name: UIKeyboardWillChangeFrameNotification, object: nil)
然后我有一个方法:
func keyboardWillChangeFrame(notification: NSNotification) {
处理一切。
现在,在不同的面板上我想以不同的方式修改我的约束,所以我为此准备了不同的方法:
func keyboardWillChangeFrameInOtherWay(notification: NSNotification) {
现在为了支持该观点,我必须将其附加到观察者身上。但是当我写在 viewDidLoad:
NSNotificationCenter.defaultCenter().addObserver(self, selector:
#selector(keyboardWillChangeFrameInOtherWay), name:
UIKeyboardWillChangeFrameNotification, object: nil)
然后当键盘出现在第二个面板上时 - 两种方法都会触发(从第一个面板和第二个面板)。我如何才能 运行 对特定面板只有一种方法?
我不太清楚你的问题,顺便说一句,你可以访问NSNotification
的object
字段。如果您将一个对象传递给 NSNotificationCenter
那么您将收到它并且您可以执行一种方法或另一种方法。另一种可能是每次观察者都删除和添加,这样拥有 textField 的控制器每次只观察一个...
我会post我的回答,因为我在这里发现了问题,我希望这是处理这个问题的最好方法。我在第一个面板上添加了这段代码:
override func viewDidDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
另外,因为它嵌入在导航控制器中,所以我移动了这个:
NSNotificationCenter.defaultCenter().addObserver(self, selector:
#selector(keyboardWillChangeFrame),
name: UIKeyboardWillChangeFrameNotification, object: nil)
到viewWillAppear
,现在工作正常。