2012-08-09 2 views
0

У меня есть изображение, и я хотел бы иметь его, поэтому, когда я нажимаю на часть изображения, выделяется только этот раздел. В настоящее время, чтобы проверить это, я создал приложение и разместил изображение на обратной стороне. Я только что создал изображение и написал на нем 1,2,3 и 4. Затем я использовал UIView для рисования горизонтальной и вертикальной линий по изображению.iOS on-click выделить раздел изображения

Я установил прослушиватель жестов по касанию и распечатал, в какой раздел я попал. Код ниже

- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer 
{ 
    // Get the location of the touch 
    CGPoint touchPoint = [recognizer locationOfTouch:0 inView:[self view]]; 

    if(touchPoint.x > 10 && touchPoint.x < 160) 
    { 

     if(touchPoint.y > 30 && touchPoint.y < 220) 
     { 
      NSLog(@"Button 1"); 


     }else if(touchPoint.y > 220 && touchPoint.y < 430){ 
      NSLog(@"Button 3"); 
     } 

    }else if(touchPoint.x > 160 && touchPoint.x < 310) 

    { 
     if(touchPoint.y > 220 && touchPoint.y < 430) 
     { 
      NSLog(@"Button 4"); 
     }else if(touchPoint.y > 30 && touchPoint.y < 220){ 
      NSLog(@"Button 2"); 
     } 

    } 

    //For debugging 
    // NSLog(@"x = %f y = %f", touchPoint.x, touchPoint.y); 
} 

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

[button setBackgroundImage:[UIImage imageNamed:@"highlightImage.png"] forState:UIControlStateHighlighted]; 

и установить альфа-0,5 или где-то, что , поэтому, похоже, этот раздел выделяется. Если это единственный способ сделать это, тогда просто оставьте ответ, сказав это, и я соглашусь с ним, но я бы предпочел более конкретное решение, если оно доступно! Заранее спасибо

Пример изображения создан enter image description here

ответ

1

кажется правильным подходом.

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

+0

Если бы ощущение, что это был, вероятно, единственным реальным подходом, но я думаю, если это работает, это работает, Да будет иметь больше смысла использовать рамку ImageView, не знаю, почему я использовал весь вид. – AdamM

1

Вы можете получить это поведение бесплатно, я полагаю, поднявшись по иерархии и используя UIControl вместо этого. Подклассируйте его и измените его поведение подсветки.

+0

Не могли бы вы привести пример того, как это будет работать? – AdamM

+0

Подкласс UIControl может содержать подпункты с каждой отображаемой областью изображения - обязательно для их свойства «tag» для более позднего. Затем в UIControl вы можете переопределить методы отслеживания касания и использовать GCRect и CGRectContainsPoint, чтобы определить, было ли выбрано какое-либо из подзонов и на основе нового внутреннего состояния UIControl, вы можете определить, как управлять всеми видами, чтобы получить желаемые эффекты. – dans3itz

+0

Это может быть немного менее эффективно, чем тест, который вы делаете выше, но каждое представление можно манипулировать независимо и может быть запрошено с помощью их свойства frame, явно зная их размеры и место размещения. Преимущество _major_ в том, что вы можете записать это в одном уникальном месте, продлить и повторно использовать позже. И если вам нужно что-либо еще в делегате главного представления, вы можете, конечно, отправить события из реализации UIControl в ответчики. – dans3itz