gpt4 book ai didi

ios - 具有对象参数的特定文本字段的Swift 2 addObserver

转载 作者:可可西里 更新时间:2023-11-01 05:40:31 26 4
gpt4 key购买 nike

根据我的理解,addObserver 方法的 object 参数是您要从中接收通知的对象。大多数时候,我将其视为 nil(我假设这是因为所有对象都需要指定类型的通知)。在我的特殊情况下,我在屏幕顶部和屏幕底部都有一个文本字段,我希望 View 仅在用户点击底部文本字段而不是顶部文本字段时向上移动。所以我在 viewWillAppear

中调用了下面的方法
func subscribeToKeyboardNotifications() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: self.bottomTextField)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: self.bottomTextField)
}

keyboardWillShow:keyboardWillHide: 选择器调用重新定位 View 框架的方法。我尝试将 object 参数保留为 nil 但这会收到来自两个文本字段的通知。我尝试将 object 参数设置为 self.bottomTextField(如上所示),但没有收到来自任一文本字段的通知。我的问题是双重的。首先,我是否正确理解了 addObserver 方法(尤其是 object 参数),其次,为什么它没有注册来自 self.bottomTextField 的通知。谢谢!

解决方案:我知道这不是我要问的确切问题的解决方案,但我最终做了什么,当仅单击底部文本字段时, View 向上移动如下:

func subscribeToKeyboardNotifications() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
}

然后在 keyboardWillShow: 方法中我有:

func keyboardWillShow(notification: NSNotification) {
if bottomTextField.editing { // only reset frame's origin if editing from the bottomTextField
view.frame.origin.y -= getKeyboardHeight(notification)
}
}

希望对您有所帮助!

最佳答案

First, am I understanding the addObserver method correctly (especially the object parameter)

是的,您已经知道了。指定nil 意味着无论哪个对象发送通知,您都会收到通知;提供指向某个对象的指针意味着您正在观察来自该特定对象的通知。

second, why is it not registering notifications from self.bottomTextField

您正在观察错误的通知。 UITextField 永远不会发送 UIKeyboardWillShowNotification -- 这是来自窗口的通知。如果您为 object 参数指定了 nil,那么您会从任何发送它的对象(包括窗口)获得通知。但是当您将文本字段指定为对象参数时,您根本不会收到任何通知,因为文本字段不会发送该通知。您应该改为观察 UITextFieldTextDidBeginEditingNotificationUITextFieldTextDidEndEditingNotification,它们是 UITextField 发送的通知。

关于ios - 具有对象参数的特定文本字段的Swift 2 addObserver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34082835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com