Tag: addobserver

Swift 2 addObserver特定的textField与对象参数

据我了解, addObserver方法的object参数是你想要接收通知的对象。 大多数时候,我认为它nil (我认为这是因为指定types的通知是从所有对象中获取的)。 在我的特殊情况下,我在屏幕的顶部和屏幕的底部有一个文本字段,我希望只有当用户点击底部文本字段,而不是顶部的时候,视图才会向上移动。 所以我在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:select器调用方法来重新定位视图的框架。 我试图离开object参数nil但是会从两个文本字段接收通知。 我尝试设置object参数self.bottomTextField (如上所示),但不接收来自任何文本字段的通知。 我的问题是双重的。 首先,我正确理解addObserver方法(特别是object参数),其次,为什么不从self.bottomTextField注册通知。 谢谢! 解决scheme:我知道这不是我所问的确切问题的解决scheme,但是我最终做了什么以使视图向上移动,只需点击底部的文本字段即可: 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) { […]

在UIViewController中添加和删除观察者到NSNotificationCenter

看看各种苹果的例子(例如添加音乐 ),我看到他们将观察者添加到viewDidLoad的默认NSNotificationCenter ,然后在dealloc删除它们。 这看起来很危险,因为viewDidLoad可以被调用多次而不需要调用dealloc 。 然后这将多次添加相同的观察者,导致处理程序被多次调用。 解决这个问题的办法也是去除viewDidUnload中的观察者,但是这意味着同样的观察者可能会在dealloc被第二次移除,这似乎是一个潜在的问题。 我错过了什么?

通过Apple Watch更新应用程序内容的简单方法

当我按下AppleWatch应用程序上的button时,我无法find更新iPhone应用程序中的视图的简单方法。 我用NSUserDefaults Observer像这样试了一下: iPhone App ViewController(在ViewDidLoad()中): // Create and share access to an NSUserDefaults object. mySharedDefaults = NSUserDefaults(suiteName: "group.sharedTest") //Add Observer NSUserDefaults.standardUserDefaults().addObserver(self, forKeyPath: "test", options: NSKeyValueObservingOptions.New, context: nil) 在Watchkit Extensions InterfaceController中,我添加了一个带有这个代码的button的IBAction: mySharedDefaults!.setObject("testValue", forKey: "test") mySharedDefaults!.synchronize() 但是当我按下button,没有任何反应! 如果我在我的iPhone视图控制器中设置一个对象,它的工作,但不是如果它通过应用程序更新! 有人能帮我吗?