Сенсорное событие не работает? в UImageview? - PullRequest
2 голосов
/ 22 октября 2009

я сделал следующее в viewdidload viewcontroller.m

    img = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
img.multipleTouchEnabled = YES;
[self.view addSubview:img];
[img release];

но Touch начал, коснитесь Moved, все не работает, когда я проверяю точку останова? вместо этого, когда я использую файл XIB, я устанавливаю множественное прикосновение, но в обоих сенсорное событие не работает ... anyHelp? пожалуйста * * 1004

1 Ответ

3 голосов
/ 22 октября 2009

Вы должны попробовать установить это свойство:

img.userInteractionEnabled = YES;

Но этого недостаточно, потому что методы:

– touchesBegan:withEvent:
– touchesMoved:withEvent:
– touchesEnded:withEvent:

из класса UIResponder (базовый класс UIVIew), а не из UIViewController.

Поэтому, если вы хотите, чтобы они вызывались, вы должны определить подкласс UIView (или UIImageView в вашем случае), где вы переопределяете базовые методы.

Пример:

MyImageView.h

@interface MyImageView : UIImageView {
}

@end

MyImageView.m

@implementation MyImageView

- (id)initWithFrame:(CGRect)aRect {
    if (self = [super initWithFrame:rect]) {
        // We set it here directly for convenience
        // As by default for a UIImageView it is set to NO
        self.userInteractionEnabled = YES;
    }
    return self;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // Do what you want here
    NSLog(@"touchesBegan!");
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    // Do what you want here
    NSLog(@"touchesEnded!");
}

@end

Затем вы можете создать экземпляр MyImageView в вашем примере с помощью контроллера представления:

img = [[MyImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[self.view addSubview:img];
[img release];

И вы должны увидеть сенсорные события (также при условии, что self.view, конечно, для userInteractionEnabled установлено значение YES).

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