-1

以下代码在升级到 Xcode 7.3 之前可以正常工作;

函数我的方法(){

            let tapGesture = UITapGestureRecognizer(target: self, action: #selector(CreateButtonObject.notifyButtonAction(_:)))
            let longPressGesture = UILongPressGestureRecognizer(target: self, action: #selector(CreateButtonObject.notifyButtonAction(_:)))
            tapGesture.numberOfTapsRequired = 1

}

@IBAction @objc func notifyButtonAction (sender: AnyObject) {

    let userInfo:Dictionary<String,AnyObject!>
    print("Sender from tap or longpress: \(sender)")
    **let button = sender.view as! UIButton**
    let soundName = button.currentTitle!

    userInfo = ["sender" : sender]

    NSNotificationCenter.defaultCenter().postNotificationName(sleepEZButtonActionNotificationKey, object: nil, userInfo: userInfo)

    DDLogDebug("CreateButtonObject.notifyButtonAction: Notificaiton! ButtonViewController")
    DDLogDebug("CreateButtonObject.notifyButtonAction: Posted Notification sleepEZButtonActionNotificationKey to initiate buttonAction")
    DDLogDebug("CreateButtonObject.notifyButtonAction: Button Name: \(soundName)")
    DDLogDebug("")
}

但是现在当我在 Xcode 7.3 中执行此操作时,我在 sender.view 行中收到以下错误;模糊使用“视图”

其次是编译器错误。

任何人都知道这里发生了什么以及如何解决。想不通这个。基本上,我需要从创建并在按下按钮时激活的 UITapGesureRecognizer 对象中获取 UIButton 属性。卡住。

提前致谢...

4

1 回答 1

3

在声明func notifyButtonAction (sender: AnyObject)中,您输入sender了 AnyObject。但是 AnyObject 没有view. 因此,在您的行sender.view as! UIButton中,该短语sender.view是非法的。

sender如果是这样,请键入UIGestureRecognizer: func notifyButtonAction (sender: UIGestureRecognizer)。手势识别器确实有view,所以一切都会好起来的。

于 2016-04-19T03:08:18.620 回答