2010-03-03 6 views
1

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

Вот мой код:

Заголовок файла: Файл

@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]; 
} 

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

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

+0

Здесь я застрелен в темноте; вы пытались установить его первым ответчиком? – willcodejavaforfood

ответ

1
self.userInteractionEnabled = NO; 

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

+0

Я прокомментировал, что линия и моя кнопка работают, но я ничего не могу использовать на системной клавиатуре. Как отправить штрихи «через» MathKeyboard на системную клавиатуру? – CajunLuke

+0

@Cajun: отправка сообщений на системную клавиатуру «недокументирована». Если целью является текстовое поле или текстовое представление, измените его свойство 'text' напрямую. – kennytm

+0

Не только он не документирован, но и не работает. Я должен был добавить свое представление в качестве подпрограммы клавиатуры напрямую. Таким образом, ответ напрямую не отвечает на вопрос, но он меня на правильном пути. – CajunLuke

Смежные вопросы