2016-12-15 2 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

не гнездится своей 'функции Logic' внутри' viewDidLoad'. – rmaddy

+0

Отредактировано. Это не на самом деле внутри, я вырезал много кода из-за того, что он не нужен. Все еще не работает. – SwiftBeginner

+0

UITapGestureRecoginzer отлично работает в swift3. Ваш код, если gestureRecognizer находится внутри viewDidLoad(), а логика func находится вне viewDidLoad(), тоже работает отлично. Проблема - это что-то еще. – dejix

ответ

3

fun Логика требует 1 аргумента, вы должны предоставить как таковой в своем селекторе. Переход от

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

в

let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(yourClassName.Logic(_ :))) 
Смежные вопросы