2010-03-03 6 views
1

J'ai une sous-classe de UIImageView que j'ai besoin de savoir quand est touché. (Code complet ci-dessous.) J'ai trouvé et lu à la fois this et this. Ils étaient légèrement utiles, mais ni vraiment travaillé. Non seulement ma méthode touchesBegan:withEvent: n'est pas appelée, le bouton derrière l'image est pressé.UIImageView détection de sous-classe tactile

Voici mon code:

fichier d'en-tête:

@interface MathKeyboardKey : UIImageView 
{ 

} 

@end 

fichier de mise en œuvre:

@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 

Indicatif téléphonique:

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

Ce point de vue est ajouté en tant que sous-vue d'un autre e MathKeyboard). La vue d'ensemble ne peut pas avoir d'interaction utilisateur activée, car elle couvre une autre vue (le clavier du système). Lorsque j'essaie d'ajouter MathKeyboardKey à la vue du clavier système, il n'apparaît pas. Si j'essaie d'utiliser un UIButton, il n'apparaît jamais, quelle que soit la vue dans laquelle je le place.

Question, dans le cas où cela n'est pas apparent, est: comment détecter les contacts dans cette sous-classe UIImageView?

+0

Je fais du tir dans le noir ici; avez-vous essayé de le régler au premier répondeur? – willcodejavaforfood

Répondre

1
self.userInteractionEnabled = NO; 

Puisque vous avez désactivé l'interaction utilisateur de la vue parent, comment l'enfant peut-il recevoir des interactions? Retirez cette ligne.

+0

J'ai commenté cette ligne et mon bouton fonctionne, mais je ne peux rien utiliser dans le clavier du système. Comment envoyer des "touches" à travers le "MathKeyboard" au clavier du système? – CajunLuke

+0

@Cajun: L'envoi de messages au clavier du système est "non documenté". Si la cible est un champ de texte ou une vue de texte, modifiez sa propriété 'text' directement. – kennytm

+0

Non seulement il n'est pas documenté, mais il ne fonctionne pas. Je devais ajouter ma vue en sous-vue du clavier directement. Donc, la réponse ne répond pas directement à la question, mais elle m'a mis sur la bonne voie. – CajunLuke

Questions connexes