Отображать UIAlert, когда UIImageView сенсорный - PullRequest
0 голосов
/ 03 октября 2011

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

Заранее спасибо ..

Ответы [ 7 ]

5 голосов
/ 03 октября 2011

Добавьте UITapGestureRecognizer:

imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] 
    initWithTarget:self action:@selector(handleTap:)];
[imageView addGestureRecognizer:tapRecognizer];
[tapRecognizer release];

А затем ваш обратный вызов ...

- (void)handleTap:(UITapGestureRecognizer *)tapGestureRecognizer
{
  //show your alert...
}
1 голос
/ 03 октября 2011

Прежде всего, включите свойство

yourImgView.setUserInteractionEnabled = TRUE;

Затем примените следующий код к viewDidLoad;

UITapGestureRecognizer *tapOnImg = [[UITapGestureRecognizer alloc] initWithTarget:self  action:@selector(handleTapOnImgView:)];
tapOnImg.numberOfTapsRequired = 1; tapOnImg.delegate = self;
[yourImgView addGestureRecognizer:tapOnImg]; 
1 голос
/ 03 октября 2011
UITapGestureRecognizer *singleTapOne = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];
    singleTapOne.numberOfTouchesRequired = 1; singleTapOne.numberOfTapsRequired = 1; singleTapOne.delegate = self;
[self.view addGestureRecognizer:singleTapOne]; [singleTapOne release];


- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer
1 голос
/ 03 октября 2011

Если вы не намереваетесь подкласс UIImageView переопределить методы сенсорного события - или внедрить сенсорные методы в ViewController и проверить фрейм, в котором сенсор находится в фрейме просмотра изображения - вы можете (и этовозможно, проще) добавить UITapGestureRecognizer к вашему UIImageView.

См. здесь в документации для получения более подробной информации

UITapGestureRecognizer* tapGR = [[UITapGestureRecognizer alloc]
    initWithTarget:self action:@selector(tapOnImage:)];
[yourImageView addGestureRecognizer:tapGR];
[tagGR release];

Затем реализуйте -(void)tapOnImage:(UIGestureRecognizer*)tapGR метод по вашему желанию

1 голос
/ 03 октября 2011

Используйте метод Touch Events, чтобы выполнить задачу

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{

    UITouch *touch = [[event allTouches] anyObject];

    CGPoint location= [touch locationInView:self.view];

    if(CGRectContainsPoint(urImageView.frame, location)) {
        //AlertView COde
    }
}
0 голосов
/ 24 ноября 2011

Вместо использования UITapGestureRecognizer, если класс, в котором у вас есть изображение, переопределяет UIResponder, вы можете просто переопределить touchesBegan:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
      UITouch *touch = [touches anyObject];
      if ([touch view] == YOUR_IMAGE_VIEW) {
          // User clicked on the image, display the dialog.
          UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Image Clicked"     message:@"You clicked an image." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
          [alert show];
          [alert release];
      }
}

Вы должны быть уверены, что userInteractionEnabled равно YES для вашего изображения.

0 голосов
/ 03 октября 2011

Используйте метод сенсорного делегата и найдите там изображение,

...