Новое в iPhone SDK: прикосновения начались, не называется - PullRequest
1 голос
/ 26 октября 2009

Я создал очень простое приложение для iPhone с приложением File / New Projet / View-Based. Там нет файла NIB.

Вот мое приложение Delegate

.h

    @interface MyAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    MyViewController *viewController;
}

.m

    - (void)applicationDidFinishLaunching:(UIApplication *)application {    

    // Override point for customization after app launch    
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];
}

А вот мой метод loadView в моем контроллере

 - (void)loadView {
 CGRect mainFrame = [[UIScreen mainScreen] applicationFrame];
 UIView *contentView = [[UIView alloc] initWithFrame:mainFrame];
 contentView.backgroundColor = [UIColor redColor];
 self.view = contentView;
 [contentView release];
}

Теперь, чтобы поймать событие touchesBegan, я создал новый подкласс UIView:

.h

@interface TouchView : UIView {
}

.m

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
 NSLog(@"Touch detected");

}

и изменил вторую строку в моем loadView в это:

 TouchView *contentView = [[UIView alloc] initWithFrame:mainFrame];

Почему touchSegan никогда не вызывается?

Ответы [ 2 ]

3 голосов
/ 24 мая 2010

Если вы измените loadView на это:

TouchView *contentView = [[TouchView alloc] initWithFrame:mainFrame];

У вас не должно возникнуть проблем с обнаружением касаний в TouchView. В вашем коде вы не создали экземпляр TouchView, вы создали экземпляр UIView.

0 голосов
/ 29 октября 2009

Нашел решение: touchesBegan вызывается на viewController, а не на view ...

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