无法识别的选择器发送到实例Swift NSNotification

时间:2015-04-18 00:43:23

标签: ios xcode swift instance

我在Swift的Messaging App上观看了这个视频并逐字复制。然而,最近有一些Xcode的更新,所以我不确定这是不是问题,或者我输错了。我还查看了与我类似的其他问题,仍然无法找到问题。

我放在viewDidLoad()中的代码处理显示键盘:

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWasShown", name: UIKeyboardDidShowNotification, object: nil)

然后我在这里调用keyboardWasShow函数:

 func keyboardWasShown(notification: NSNotification) {

    let dict : NSDictionary = notification.userInfo!
    let s : NSValue = dict.valueForKey(UIKeyboardFrameEndUserInfoKey) as! NSValue
    let rect : CGRect = s.CGRectValue()

    UIView.animateWithDuration(0.3, delay: 0, options: .CurveLinear, animations: {

        self.resultsScrollView.frame.origin.y = self.scrollViewOriginalY - rect.height
        self.frameMessageView.frame.origin.y = self.frameMessageOriginalY - rect.height

        var bottomOffset : CGPoint = CGPointMake(0, self.resultsScrollView.contentSize.height - self.resultsScrollView.bounds.size.height)

        self.resultsScrollView.setContentOffset(bottomOffset, animated: false)

        }, completion: {
            (finished: Bool) in

            //

    })

}

之所以我认为它是keyboardWasShown函数是因为输出显示 keyboardWasShown]:无法识别的选择器发送到实例0x7f848c12be40

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:9)

您实现的方法接受一个参数,因此您需要在选择器名称的末尾添加冒号。

 let center = NSNotificationCenter.defaultCenter()
 center.addObserver(self, 
                    selector: "keyboardWasShown:",
                    name: UIKeyboardDidShowNotification,
                    object: nil)