UITapGestureRecognizer не работает, добавленный в UIView?

Я пытаюсь сделать распознаватель жестов для простого UIView:

UIView *theView = [[UIView alloc] initWithFrame:rect];
[theView setUserInteractionEnabled:YES];

UITapGestureRecognizer *tap = [[[UITapGestureRecognizer alloc] initWithTarget:self 
                                                                       action:@selector(handleTap)] autorelease];
[theView addGestureRecognizer:tap];

Если я отлаживаю свойствоgestRecognizersпредставления, оно показывает объект распознавателя жестов. Но когда я нажимаю внутри представления, это не работает.

Тот же код, использующий UIImageView, работает отлично, есть идеи, почему он не работает в UIView?

ОБНОВЛЕНО:

Примерный класс.

@implementation ExampleClass

- (UIView *)getViewInRect:(CGRect)rect
{
    UIView *theView = [[UIView alloc] initWithRect:rect];
    [theView setUserInteractionEnabled:YES];

    UITapGestureRecognizer *tap = [[[UITapGestureRecognizer alloc] 
                                    initWithTarget:self 
                                    action:@selector(handleTap)] 
                                   autorelease];
    [aText addGestureRecognizer:tap];

    return theView;
}

- (UIImageView *)getImageViewInRect:(CGRect)rect
{
    UIImageView *theView = [[UIImageView alloc] initWithRect:rect];
    [theView setUserInteractionEnabled:YES];

    UITapGestureRecognizer *tap = [[[UITapGestureRecognizer alloc] 
                                        initWithTarget:self 
                                                action:@selector(handleTap)] 
                                   autorelease];
    [theView addGestureRecognizer:tap];

    return [theView autorelease];    
}

- (void)handleTap
{
    NSLog(@"Tap Handled!!", nil);
}

@end

ОБНОВЛЕНО 2:

Добавление UITapGestureRecognizer ко всем подвидам представления не решает проблему...

ПОЧИНИ ЭТО!!!

В ПОРЯДКЕ!! Проблема заключалась в том, что CGRect для theView имел ширину, установленную на 0.0!!!


person Víctor B.    schedule 30.03.2011    source источник
comment
как выглядит ваша функция handleTap? Используете ли вы распознаватель жестов в Superview представления, который мог бы поймать жест?   -  person Seega    schedule 30.03.2011
comment
handleTap — это метод того же класса, в котором находится приведенный выше код. Из этого совка я могу вызвать его без проблем с помощью [self handleTap].   -  person Víctor B.    schedule 30.03.2011
comment
Вы хотите сказать, что если заменить UIView на UIImageview в приведенном выше фрагменте кода, это сработает?   -  person freespace    schedule 30.03.2011
comment
Этого... не должно быть. Показать больше кода :)   -  person freespace    schedule 30.03.2011
comment
@freespace Смотрите обновление, это код C&P из проекта (больше показать не могу). Это похоже на шутку!! :-С   -  person Víctor B.    schedule 30.03.2011
comment
Как они добавляются в вашу иерархию представлений?   -  person freespace    schedule 30.03.2011
comment
Это не имеет смысла :( Можете ли вы сделать простой проект, который воспроизводит это поведение, не раскрывая ничего о вашем проекте? Если вы добавите распознаватель касаний в self.view, ЭТО сработает?   -  person freespace    schedule 30.03.2011
comment
Я создал изолированный проект только для этой проблемы и отлично работает (включая подвиды). У меня проблема в другой части оригинального проекта... но я не знаю где. Я продолжу расследование... всем спасибо!   -  person Víctor B.    schedule 30.03.2011
comment
Используете ли вы распознаватель жестов в Superview представления, который мог бы поймать жест?   -  person Seega    schedule 30.03.2011
comment
@Seega: Нет, я не использую жесты Recognizer или userInteractionEnabled в супервизоре...   -  person Víctor B.    schedule 30.03.2011


Ответы (2)


Вы пробовали это?

[view setUserInteractionEnabled:YES];
person Robert Mao    schedule 22.11.2011

Объявите представление как ivar в файле .h. Синтезируйте, а затем назовите это так:

[self.theview setMultipleTouchEnabled:YES];

Не забудьте выделить и инициализировать это представление в методе viewDidLoad.

Вот и все.

person Vijay-Apple-Dev.blogspot.com    schedule 30.03.2011