iOS: жест с точки зрения ребенка не распознается - PullRequest
2 голосов
/ 25 февраля 2012

У меня UIScrollView в качестве корневого представления и UIImageView (назовем его родительским представлением) в качестве подпредставления корневого представления.Затем я добавляю другой UIImageView (лат, называемый дочерним представлением) как подпредставление родительского представления.Дочернее представление не содержится в границах родительского представления.Это визуальное представление моего макета представления.

................................
.       root view              .
.                  .........   .
.  ..............  . child .   .
.  .parent view .  . view  .   .
.  ..............  .........   .
.                              .
................................

Теперь, когда я добавляю UIPanGestureRecognizer в дочернее представление, жест не распознается.Я проверил userInteractionEnabled и все.Когда я устанавливаю дочернее представление как подпредставление корневого представления, жест распознается правильно.Кто-нибудь знает, что вызывает эту проблему?

Ответы [ 2 ]

5 голосов
/ 25 февраля 2012

Я думаю, что эта проблема вызвана тем, что вы добавили UIGestureRecognizer к чему-то, что не видно в родительских границах. Если вы установите clipsToBounds = YES на parentView , childView не будет отображаться, верно? Вот как это лечится. Вы можете видеть это, но «его там нет».

Это так : Вы находитесь на кухне, вы слышите телевизор в гостиной, и вы знаете, он есть, но вы не можете его видеть. Если бы стены были невидимы с другой стороны, вы могли бы видеть это, но вы не можете взаимодействовать с этим. Потому что ты не можешь пройти сквозь стены.

Надеется, что это поможет.

0 голосов
/ 25 февраля 2012

Набор tag для вашего ребенка:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
          initWithTarget:self
                  action:@selector(singleTapGestureCaptured:)];
[[rootview viewWithTag:111]addGestureRecognizer:singleTap];

-(void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture 
{
    //your code;
}
...