как получить тег UIImageView, который я нажимаю? - PullRequest
6 голосов
/ 13 декабря 2010

У меня есть несколько UIImageView, каждый из которых имеет тег;и у меня есть массив изображений, что я хочу сделать: когда пользователь нажимает один из UIImageView, приложение возвращает определенное изображение из массива.

я реализую так:

- (void)viewDidLoad 
{
    [super viewDidLoad];
    scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
    [self.view addSubview:scroll];

    NSInteger i;
    for (i=0; i<8; i++) 
    {
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, i*100 + i*15, 300, 100)];
        imageView.backgroundColor = [UIColor blueColor];
        imageView.userInteractionEnabled = YES;
        imageView.tag = i;

        NSLog(@"%d", imageView.tag);

        [scroll addSubview:imageView];

        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(findOutTheTag:)];
        [imageView addGestureRecognizer:tap];

    }

    scroll.contentSize = CGSizeMake(320, 115*i);

}
- (void)findOutTheTag:(id)sender
{

    //  HOW TO FIND THE tag OF THE imageView I'M TAPPING?

}

Я хочу узнать imageView.tag и передать imageView.tag на

UIImageView *tappedImage = [imageArray objectAtIndex:imageView.tag];

, чтобы отобразить изображение.

Я пометил все из них, вопрос в том, как я могуузнать tag изображенияПосмотрите, что я нажимаю?спасибо за чтение ^ _ ^

Ответы [ 3 ]

12 голосов
/ 13 декабря 2010

С риском сделать рекомендацию, не видя полной картины вашего приложения, почему бы не использовать для этого пользовательскую UIButton вместо UIImageViews?С помощью кнопки UIB вы можете настроить действие и передать идентификатор отправителя, из которого вы можете легко получить доступ к вашим тегам и извлечь данные из вашего массива.

ИЛИ, если вы действительно хотите использовать приведенный выше код и ваши знания дляфакт - вызывается метод ((void) findOutTheTag: (id), все, что вам нужно сделать, это:

- (void)findOutTheTag:(id)sender {
    switch (((UIGestureRecognizer *)sender).view.tag)      
{
    case kTag1:
    //...
    case kTag2:
    //...
  }
}
2 голосов
/ 13 декабря 2010

Вместо использования UIImageView, почему бы вам не использовать UIButton.Таким образом, вы можете просто добавить прослушиватель событий UITouchDown.Вы можете пометить каждую кнопку таким образом, чтобы в вашем методе touchDown вы могли найти, какая кнопка была нажата.

    UIButton *button = [[UIImageView alloc] initWithFrame:CGRectMake(10, i*100 + i*15, 300, 100)];
    button.backgroundColor = [UIColor blueColor];
    button.tag = i;
    [button addTarget:self action:@selector(touchDown:) controlEvent:UIControlEventTouchDown]; 

А внутри метода touchDown: вам просто нужно преобразовать отправителя в UIButton, чтобы получить доступ ктег.

- (void)touchDown:(id)sender
{
    UIButton* button = (UIButton*)sender;
    switch(button.tag)
    {
        case TAG1:
           break;
        //etc
    }
}
1 голос
/ 13 декабря 2010

Чтобы узнать, какое изображение должно быть сенсорным, используйте touchBegan метод:

Примечание: Прежде всего необходимо подтвердить, что для просмотра изображения должно быть userIntrectionEnabled=YES; Теперь используйте этот метод:

-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event{
    // get touch event
    UITouch *touch = [[event allTouches] anyObject];
    CGPoint touchLocation = [touch locationInView:self.view];
    if ([touch view].tag == 800) {

     //if image tag mated then perform this action      
    }
}

Вы можете использовать оператор switch внутри touchBegan .

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