uiimageview касается проблемы - PullRequest
       5

uiimageview касается проблемы

0 голосов
/ 12 сентября 2011

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

у каждого изображения есть уникальная карта.Теперь пользователь может перетащить карту поверх любой другой имеющейся карты.Для этого мне нужно знать, какая карта была выбрана.как это сделать?

касания включены, работает во всех местах, на мой взгляд.я хочу, чтобы касания были включены только в uiimageview.

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

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

Ответы [ 5 ]

1 голос
/ 12 сентября 2011
  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
  {
     CGPoint pnt = [[touches anyObject]locationInView:self.view];
         UIImageView *imgView;
      if((pnt.x > CGRectGetMinX(imgView.frame) && pnt.x < CGRectGetMaxX(imgView.frame))&& 
            (pnt.y > CGRectGetMinY(imgView.frame) && pnt.y < CGRectGetMaxY(imgView.frame)) && 
             ChkOfferCount==TRUE)
      {
    UIAlertView *obj = [[UIAlertView alloc]initWithTitle:@"Image Touched" 
                               message:@"Selected image is this" delegate:nil  
                               cancelButtonTitle:@"cancel" 
                               otherButtonTitles:@"ok",nil];
            [obj show];
            [obj release];

      }

   }
1 голос
/ 12 сентября 2011
UITouch *touch = [touches anyObject];
CGPoint offSetPoint = [touch locationInView:myImageView];

Теперь вы определили только объект myImageView для получения касаний. Запишите в эти строки метод touchesBegan или touchesEnded, как вам требуется ... Надеюсь, это поможет .... Не забудьте установить свойство userInteractionEnabled для изображения в YES, чтобы касания работали.

1 голос
/ 12 сентября 2011

То, что вы можете сделать, это в touchesBegan: метод, который вы можете проверить, какое местоположение в вашем представлении выбрано, используя

CGPoint point = [recognizer locationInView:self];

А затем выполните цикл for, чтобы проверить, какое изображение выбрано, как это

for(i = 0; i < 5; i++)
{
    if(CGRectContainsPoint(imageView.frame, point))
    {
        // do something.
    }
}
0 голосов
/ 12 сентября 2011

Вы также можете создать представление UIControl, затем полностью заполнить его UIImageView, а затем просто перехватить сенсорные события в UIControl.

0 голосов
/ 12 сентября 2011

Установите imageView.userInteractionEnabled=YES;, и вы можете работать с методами касания в самом imageView, например, touchesBegan: Вы можете работать с этими методами для обработки перетаскивания карточек.

...