Подкласс UIViewController не перехватывает сенсорное событие - PullRequest
7 голосов
/ 29 сентября 2010

У меня есть родительский класс (A), который является UIViewController. Затем я создаю класс B, который является подклассом класса A. Что происходит, так это то, что я не могу перехватить сенсорные события в классе B такими методами, как touchesBegan. Но если я реализую эти методы в классе A ... они будут вызваны.

@interface A:UIViewController
.....

@interface B:A

Ответы [ 3 ]

7 голосов
/ 22 мая 2012

Чтобы использовать UIViewController, необходимо выполнить событие вроде:

- (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 ]);
    }
}

Надеюсь, это поможет.

4 голосов
/ 29 сентября 2010

Вам нужно создать подкласс UIView для реализации метода touchesBegan.

@interface YourCustomView : UIView

@implementation YourCustomView

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

А теперь установите вид вашего VC как «YourCustomView»

@interface YourViewController : UIViewController
{
     YourCustomView*    view  
}
3 голосов
/ 29 сентября 2010

Вам необходимо реализовать эти методы в ваших UIView подклассах, а не в UIViewController подклассах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...