Передача сенсорных событий в uiimageview внутри прокрутки, добавленной в качестве подпредставления для просмотра - PullRequest
0 голосов
/ 26 января 2012

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

Вот иерархия представлений

                          View
                            |
                            |
                    -------   --------
                   |                  |
                imageView1         scrollview
                                       |
                                  ...........................
                                  |           |       |.....|
                                 imageviews2

Imageview1 находится выше imageview 2.

Икогда я прокручиваю вид прокрутки, невозможно прикоснуться к некоторым из видов изображения внутри вида прокрутки, так как он находится позади вида изображения в представлении.

Как я могу передать сенсорные события в viewview2, когда он отстаетimageview1.

Ответы [ 4 ]

0 голосов
/ 01 мая 2015

Вам нужно передать сенсорное событие UIViews, которые находятся за пределами родительского представления.

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    // Convert the point to the target view's coordinate system.
    // The target view isn't necessarily the immediate subview
    CGPoint pointForTargetView = [self.targetView convertPoint:point fromView:self];

    if (CGRectContainsPoint(self.targetView.bounds, pointForTargetView)) {

        // The target view may have its view hierarchy,
        // so call its hitTest method to return the right hit-test view
        return [self.targetView hitTest:pointForTargetView withEvent:event];
    }

    return [super hitTest:point withEvent:event];
}

https://developer.apple.com/library/ios/qa/qa2013/qa1812.html

0 голосов
/ 26 января 2012

не забудьте также снять флажок «задерживает прикосновения к контенту» и «отменяемые прикосновения к контенту» в своем просмотре прокрутки!

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

Надеюсь, этот ответ кому-нибудь пригодится. Я сделал это без использования hittest.

Взял все подпредставления в scrollview и проверил, является ли это представлением изображения, и сделал следующее.

Передал touchevents в другое представление, используя [view touchesBegan: touch withEvent: event]; мы должны написать то же самое в прикосновениях, перемещенных и прикосновениях, закругленных также.

Спасибо

Joku

0 голосов
/ 26 января 2012

Вам нужно будет создать подкласс UIView и переопределить

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

в этом подклассе, чтобы пропустить imageView1.

Возможно, вам подойдет подкласс UIImageView и экземпляр imageView1 какчлен этого класса и переопределяющий pointInside

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{ return NO; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...