как получить сенсорное событие на подпредставлениях и делегировать правильные действия в соответствии с ним - PullRequest
0 голосов
/ 10 сентября 2009

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

Я написал следующий код в один-единственный код viewController:

@interface testViewController : UIViewController {

    IBOutlet UIView *redView;
    IBOutlet UIView *redView1;
    IBOutlet UIView *blueView;

}

//---expose the outlet as a property---
@property (nonatomic, retain) IBOutlet UIView *redView;
@property (nonatomic, retain) IBOutlet UIView *redView1;
@property (nonatomic, retain) IBOutlet UIView *blueView;

//---declaring the action---
-(IBAction) viewClicked: (id) sender;

@end

И его файл .m содержит ответчик действий. Что я пытаюсь сделать, так это то, что при касании моих представлений они генерируют событие, которое должно обрабатываться этим единственным методом, который соответствующим образом изменит задний цвет красного обзора.

-(IBAction) viewClicked:(id) sender {
    redView.backgroundColor = [UIColor blackColor];
}

Я делаю это так, как делегат

    @interface testAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    testViewController *viewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet testViewController *viewController;

@end

В testAppdelegate.m я делаю представления и подпредставления в соответствии с ним, и они отображают его очень хорошо, но я не могу получить какие-либо события, когда они касаются (viewClicked :) Как это сделать ????

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

    // Override point for customization after application launch
    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    window.backgroundColor = [UIColor whiteColor];

    // Create a simple red square 
    CGRect redFrame = CGRectMake(0, 10, 320, 100);
    UIView *redView = [[UIView alloc] initWithFrame:redFrame];
    redView.backgroundColor = [UIColor redColor];
    //-------------------------------------------------------------------------------------------------------   
    // Create a simple blue square
    CGRect blueFrame = CGRectMake(5, 115, 100, 100); 
    UIView *blueView = [[UIView alloc] initWithFrame:blueFrame]; 
    blueView.backgroundColor = [UIColor blueColor];

    // Create a simple blue square
    CGRect blueFrame1 = CGRectMake(110, 115, 100, 100); 
    UIView *blueView1 = [[UIView alloc] initWithFrame:blueFrame1]; 
    blueView1.backgroundColor = [UIColor blueColor];


    // Add the square views to the window
    [window addSubview:redView];
    [window addSubview:blueView];
    [window addSubview:blueView1]; 

    [window addSubview:viewController.redView];
    [window addSubview:viewController.blueView];
        [window addSubview:viewController.blueView1];

    [window makeKeyAndVisible];
}

Спасибо

1 Ответ

0 голосов
/ 10 сентября 2009

Как вы связываете viewClicked с представлениями? Как правило, для обработки касаний вы используете touchesBegan:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        UITouch* touch = [touches anyObject];
           NSUInteger numTaps = [touch tapCount];
    if ([touches count] > 1)
        NSLog(@"mult-touches %d", [touches count]);

        if (numTaps < 2) {
    } else {
        NSLog(@"double tap");
    }

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