以下代码在升级到Xcode 7.3之前正常工作;
func myMethod(){
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的行中出现以下错误; 模糊地使用'view'
后面是编译器错误。
任何人都知道这里发生了什么,以及如何解决。无法弄清楚这一点。基本上我需要从创建的UITapGesureRecognizer对象中获取UIButton属性,然后在按下按钮时激活。卡住。
提前致谢...
答案 0 :(得分:3)
在声明func notifyButtonAction (sender: AnyObject)
中,您已将sender
键入为AnyObject。但是AnyObject没有view
。因此,在您的第sender.view as! UIButton
行中,短语sender.view
是非法的。
将sender
键入为UIGestureRecognizer,如果它是这样的:func notifyButtonAction (sender: UIGestureRecognizer)
。手势识别器确实有view
,所以一切都会很好。