обрабатывать жест касания с аргументом iphone / ipad - PullRequest
4 голосов
/ 01 июля 2010

когда срабатывает мой жест касания, мне нужно отправить дополнительный аргумент вместе с ним, но я, должно быть, делаю что-то действительно глупое, что я тут делаю неправильно:

Вот мой жест, который создается и добавляется:

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:itemSKU:)];
tapGesture.numberOfTapsRequired=1;
[imageView setUserInteractionEnabled:YES];
[imageView addGestureRecognizer:tapGesture];
[tapGesture release];

[self.view addSubview:imageView];

Вот где я с этим справлюсь:

-(void) handleTapGesture:(UITapGestureRecognizer *)sender withSKU: (NSString *) aSKU {
        NSLog(@"SKU%@\n", aSKU);
}

и это не будет работать из-за строки инициализации UITapGestureRecognizer.

Мне нужно знать что-то идентифицируемое о том, какое изображение было нажато.

1 Ответ

12 голосов
/ 01 июля 2010

Распознаватель жестов передает только один аргумент в селектор действия: сам.Я полагаю, вы пытаетесь различить касания различных подпредставлений изображения основного вида?В этом случае вам лучше всего позвонить -locationInView:, передать суперпредставление, а затем позвонить -hitTest:withEvent: на это представление с результатом CGPoint.Другими словами, примерно так:

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];
...
- (void)imageTapped:(UITapGestureRecognizer *)sender
{
    UIView *theSuperview = self.view; // whatever view contains your image views
    CGPoint touchPointInSuperview = [sender locationInView:theSuperview];
    UIView *touchedView = [theSuperview hitTest:touchPointInSuperview withEvent:nil];
    if([touchedView isKindOfClass:[UIImageView class]])
    {
        // hooray, it's one of your image views! do something with it.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...