2010-09-29 11 views
7

Tengo una clase principal (A) que es UIViewController. Luego creo la clase B que es la subclase de la clase A. Lo que sucede es que no puedo detectar eventos táctiles en la clase B con métodos como touchesBegan. Pero si implemento estos métodos en la clase A ... serán llamados.La subclase de UIViewController no detecta el evento táctil

@interface A:UIViewController 
..... 

@interface B:A 

Respuesta

3

que necesita para implementar estos métodos en sus subclases UIView, no en UIViewController subclases.

+0

Hmmm ... creo que no lo entiendo. Agregué más información en mi pregunta. – troner

+0

Todo funciona ahora. Fue mi error. Tenía algún tipo de error. Mi subclasificación funciona :) ¡Gracias por responder! – troner

4

Necesita subclase UIView para implementar el método touchesBegan.

@interface YourCustomView : UIView 

@implementation YourCustomView 

// Override this function to get the touch 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"TOUCH!"); 
} 

Y ahora configurar la vista de la VC como "YourCustomView"

@interface YourViewController : UIViewController 
{ 
    YourCustomView* view 
} 
+0

Sí, vale, pero esto cambia la arquitectura. ¿No hay realmente nada que pueda hacer? Tal vez vincular o habilitar algo. – troner

+0

Tuve el mismo problema recientemente y solo cambia poco en la arquitectura. – MathieuF

+1

Todo funciona ahora. Fue mi error. Tenía algún tipo de error. Mi subclasificación funciona :) ¡Gracias por responder! – troner

7

Para utilizar un UIViewController, debe hacerlo evento como:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch; 
    CGPoint pos; 

    for(touch in touches) 
    { 
     //pos = [ touch locationInView:self ]; // Only work on UIView 
     pos = [touch locationInView:self.view ];  // Work on UIViewController 

     //NSLog(@"Touch: %f, %f",pos.x,pos.y); 

     // Send X, Y, tapcount 
     _faceOff->toucheBegan(pos.x, pos.y, [ [ touches anyObject ] tapCount ]); 
    } 
} 

espero que ayude.

Cuestiones relacionadas