2016-02-11 1 views
0

У меня есть свой ViewController, соответствующий UIGestureRecognizerDelegate.Я могу добавить UITapGestureRecognizer к своим контроллерам self.view, но не к любым пользовательским представлениям. Зачем?

У меня есть разные виды, созданные в этом ViewController. Пользовательский вид, называемый circleView, и обычный UIView, называемый testView.

У меня есть следующая функция, которая вызывается из viewDidLoad

func addTapGesturesOnNumberPadDisplay() { 
    if tapGestureRecognizerNumberPadView == nil { 
     tapGestureRecognizerNumberPadView = UITapGestureRecognizer(target: self, action: "handleTap:") 
     tapGestureRecognizerNumberPadView!.delegate = self 
     //self.circleView!.addGestureRecognizer(tapGestureRecognizerNumberPadView!) // 1 
     //self.testView!.addGestureRecognizer(tapGestureRecognizerNumberPadView!) // 2 
     self.view.addGestureRecognizer(tapGestureRecognizerNumberPadView!) // 3 
    } 
} 

Этот код работает, с линией 3 активной. Мой func handleTap(sender: UITapGestureRecognizer) { запускается. Но если я прокомментирую строку 3 и сделаю строчку 1 или 2 активной ... handleTap: никогда не попадает.

Почему это?

ответ

1

Удостоверьтесь, что userInteractionEnabled настроен на правду вашего UIView's. А также здесь важна иерархия.

Если у вас есть UIView в верхней части circleView и testView, тогда это не сработает.

Помимо этого, третья линия работает, потому что вы добавляете UITapGestureRecognizer в superview из UIViewController.

+1

спасибо, это была неделя с тех пор, как я работал над этим, и я забыл, что у меня есть drawView, накладывающийся на все, чтобы нарисовать «пальцевые задние линии». Таким образом, drawView не позволял распознать какие-либо из моих кранов. Можете ли вы добавить один и тот же жестовRezognizer к нескольким представлениям? что, похоже, не работает. –

+0

@chrisP Удостоверяются, что вы никогда не подвергаетесь этой ошибке. Рад помочь :) –