2016-12-15 51 views
0

这看起来很简单,但我一直在撕掉我的头发一段时间,现在想知道为什么这不起作用。我试图在点击时更改图像,但它似乎完全无法识别水龙头。我已经在故事板和编程上启用了用户交互,所以我有点失落。UITapGestureRecognizer不能在Swift 3.0中工作

override func viewDidLoad() { 
    super.viewDidLoad() 

    tL.isUserInteractionEnabled = true 

    x = UIImage(named: "Cross.jpg") 
    reset = UIImage(named: "white.png") 

    //Tap Gesture ------------------------------------------------------------ 

    let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(Logic)) 
    gestureRecognizer.numberOfTapsRequired = 1 

    tL.addGestureRecognizer(gestureRecognizer) 
} 

func Logic(_ sender: UITapGestureRecognizer) { 
    let tappedView = sender.view as! UIImageView 
    tappedView.image = x 
    print("Image Tapped") 
} 
+1

不要窝里面'viewDidLoad'你'Logic'功能。 – rmaddy

+0

已修改。这实际上并不在里面,因为不需要它,所以我剪掉了很多代码。还是行不通。 – SwiftBeginner

+0

UITapGestureRecoginzer在swift3中正常工作。你的代码,如果gestureRecognizer在viewDidLoad()里面,而func逻辑在viewDidLoad()外面,应该也可以。问题是别的。 – dejix

回答

3

有趣的逻辑需要1个参数,你应该在你的选择器中提供。从变化

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(Logic)) 

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(yourClassName.Logic(_ :)))