Почему сенсорное событие не приходит в мой UIImageView? - PullRequest
0 голосов
/ 20 июля 2009

У меня есть несколько вложенных представлений, таких как:

Во-первых, есть большой UIView. Внутри этого есть еще один UIView. И внутри этого есть класс MyNiceButtons, который наследуется от UIView. Итак, у меня есть:

UIView> UIView> MyNiceButtons (= UIView).

Подробно, UIView создает UIImageView и добавляет его как дочернее представление к себе, которое представляет графическую кнопку. Поэтому внутри реализации класса MyNiceButtons у меня есть этот код для обработки события касания на изображении фальшивой кнопки:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject]; // i just need single touches

    // just to see which view is affected
    UIView *tview = [touch view];
    CGRect rect = tview.frame;
    rect.origin.x = rect.origin.x + 20.0f;
    tview.frame = rect;
    [tview setBackgroundColor:[UIColor yellowColor]];

    if ([touch view] == self.fakeButtonImageView) {
        NSLog(@"touch on fake button detected");
    }
}

Все представления в иерархии имеют userInteractionEnabled = YES. Касание приходит к первому представлению в иерархии (родитель родительского).

UIView *tview = [touch view];

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

Какой трюк распознать, если касание было на кнопке UIImageView?

1 Ответ

2 голосов
/ 20 июля 2009

Сначала я бы посоветовал вам хорошенько взглянуть на то, что вы можете сделать с помощью пользовательской кнопки UIB (можно устанавливать изображения для различных состояний). В 95% случаев это должно отвечать вашим потребностям.

Если у вас есть какие-то другие потребности, я могу помочь вам отладить с помощью hitTest и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...