обнаружить событие приземления на UIImageView (s) - PullRequest
3 голосов
/ 23 января 2012

Я поместил 4 UIImageView в UIView и назвал их

UIImageView myImg1 = [[UIImageView alloc] init];     
UIImageView myImg2 = [[UIImageView alloc] init];     
UIImageView myImg3 = [[UIImageView alloc] init]; 
UIImageView myImg4 = [[UIImageView alloc] init];

Как мне сказать компилятору, что я только что коснулся UIImageView 1 или UIImaveView 2. Если я могу использовать только UIImageView для выполнения этой задачи, а не кнопки вообще.Пожалуйста, направьте меня по этому вопросу.Спасибо

Ответы [ 4 ]

6 голосов
/ 23 января 2012

Стильным решением является использование объекта UIGestureRecognizer :

в вашем loadView методе (или в любом месте, где вы кодируете UIImageView (s) Drawing ...):

   UITapGestureRecognizer *tapRecognizer;
    UIImageView *anImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
    [anImageView setTag:0]; //Pay attention here!, Tag is used to distinguish between your UIImageView on the selector
    [anImageView setBackgroundColor:[UIColor redColor]];
    [anImageView setUserInteractionEnabled:TRUE];
    tapRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageViewDidTapped:)] autorelease];
    tapRecognizer.numberOfTapsRequired = 1;
    [anImageView addGestureRecognizer:tapRecognizer];
    [contentView addSubview:anImageView];
    [anImageView release];

    UIImageView *anotherImageView = [[UIImageView alloc] initWithFrame:CGRectMake(80, 180, 100, 100)];
    [anotherImageView setTag:1]; //Pay attention here!, Tag is used to distinguish between your UIImageView on the selector
    [anotherImageView setBackgroundColor:[UIColor greenColor]];
    [anotherImageView setUserInteractionEnabled:TRUE];
    tapRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageViewDidTapped:)] autorelease];
    tapRecognizer.numberOfTapsRequired = 1;
    [anotherImageView addGestureRecognizer:tapRecognizer];
    [contentView addSubview:anotherImageView];
    [anotherImageView release];

Это простой imageViewDidTapped: пример метода, который вы можете использовать, чтобы различать два примера UIImageView объектов выше:

- (void)imageViewDidTapped:(UIGestureRecognizer *)aGesture {
    UITapGestureRecognizer *tapGesture = (UITapGestureRecognizer *)aGesture;

    UIImageView *tappedImageView = (UIImageView *)[tapGesture view];

    switch (tappedImageView.tag) {
        case 0:
            NSLog(@"UIImageView 1 was tapped");
            break;
        case 1:
            NSLog(@"UIImageView 2 was tapped");
            break;
        default:
            break;
    }
}
1 голос
/ 23 января 2012
UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
        singleFingerTap.numberOfTapsRequired = 1;
        [myImg1 addGestureRecognizer:singleFingerTap];
        [myImg2 addGestureRecognizer:singleFingerTap];
        [singleFingerTap release];

И метод действия

-(void)handleSingleTap:(UIGestureRecognizer*)sender{
    //your code here
}
1 голос
/ 23 января 2012

Вы можете сделать таккакой вид изображения сверху ..

1 голос
/ 23 января 2012

Вы должны рассмотреть возможность использования свойства tag для этого.Дайте каждому изображению уникальный tag, затем используйте эту информацию, чтобы определить, какое изображение было затронуто.Например, установите теги на

UIImageView myImg1 = [[UIImageView alloc] init];     
myImg1.tag = 1;

, и когда вы получите касание для img, позвоните

img.tag

, чтобы получить тег.

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