UIImageView обнаружение касания подкласса - PullRequest
1 голос
/ 03 марта 2010

У меня есть подкласс UIImageView, который мне нужно знать, когда меня трогают. (Полный код ниже.) Я нашел и прочитал это и это . Они были немного полезны, но ни один из них не сработал. Мой touchesBegan:withEvent: метод не только не вызывается, но и кнопка позади изображения.

Вот мой код:

Заголовочный файл:

@interface MathKeyboardKey : UIImageView
{

}

@end

Файл реализации:

@implementation MathKeyboardKey

- (id)initWithImage:(UIImage *)image
{
    if (self = [super initWithImage:image])
    {
        //init here
    }
    return self;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"-- I AM TOUCHED --");
}

- (void)dealloc
{
    [super dealloc];
}

@end  

Телефонный код:

{
    self.userInteractionEnabled = NO;

    mathKeyboardAccess = [[MathKeyboardKey alloc] initWithImage:[UIImage imageNamed:@"mathKey.png"]];
    CGRect frm = mathKeyboardAccess.frame;
    frm.origin = CGPointMake(80, 171);
    mathKeyboardAccess.frame = frm;
    mathKeyboardAccess.userInteractionEnabled = YES;
    [self addSubview:mathKeyboardAccess];
}

Этот вид добавляется как подпредставление другого (MathKeyboard). В суперпредставлении не может быть включено взаимодействие с пользователем, поскольку оно охватывает другой вид (системную клавиатуру). Когда я пытаюсь добавить MathKeyboardKey в системную клавиатуру, он не отображается. Если я пытаюсь использовать UIButton, он никогда не появляется, независимо от того, в каком виде я его размещаю.

Вопрос, если он не очевиден, заключается в следующем: как я могу обнаружить прикосновения в этом UIImageView подклассе?

1 Ответ

1 голос
/ 03 марта 2010
self.userInteractionEnabled = NO;

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

...