2013-09-27 2 views
1

Я попытался добавить к UIImageView, как показано ниже, но это не работает! _img_compass_text_background является UIImageViewДобавление касания к UIImageView не работает

Я нашел другой взгляд прикрывает мой взгляд, но большая часть сверху полон прозрачной, как я могу заставить краны пройти через это?

Другими словами, как я могу отключить представление от потребляющих кранов?

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(locationNameTapped)]; 
tapGestureRecognizer.numberOfTapsRequired = 1; 
_img_compass_text_background.userInteractionEnabled=YES; 
[_img_compass_text_background addGestureRecognizer:tapGestureRecognizer]; 
+0

как проверить это не назовешь. – Jitendra

+0

Добавить точку останова в методе locationNameTapped и проверить, является ли она вызовом или нет. –

+0

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

ответ

1

Вы говорите, что ваш imageViewview имеет еще на вершине?

В этом случае, есть много вещей, которые вы могли бы сделать:

  • Добавить tapGesture на перекрывающей view, и в целевом методе, проверьте, если постучали точка содержится в rect от imageView кадра , Используйте locationInView и CGRectContainsPoint.

  • Используйте touchesBegan/Moved/Ended и проверьте, содержит ли кадр imageView, используя containsPoint.

EDIT:

Добавить кран жест вашего перекрывающего зрения, с целевым методом что-то вроде этого:

- (void) targetMethod:(UITapGestureRecogniser*)gesture{ 

    CGPoint tapPoint = [gesture locationInView:(the view that contains both the views)]; 

    if (CGRectContainsPoint(imageView.frame, tapPoint)){ 

     //your code 

    } 

} 
+0

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

0

IBOutlet Используйте, чтобы связать изображение:

@property (nonatomic, weak) IBOutlet UIImageView *background; 

и назвал свою собственность без подчеркивания _ и использовать CamelCase для вашего имущества.

Этот код работает для меня:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(locationNameTapped:)]; 
    tapGestureRecognizer.numberOfTapsRequired = 1; 
    _background.userInteractionEnabled=YES; 
    [_background addGestureRecognizer:tapGestureRecognizer]; 
} 

- (void)locationNameTapped:(UITapGestureRecognizer *)gesture 
{ 
    NSLog(@"image tapped"); 
} 
+1

Неправильная подпись метода this: '- (void) locationNameTapped: (UITapGestureRecognizer *) gesture'? С '@selector (locationNameTapped:)'? – Amar

0

Если у Вас есть слишком много изображений установить метки для них и addding

- (void)viewDidLoad 
    { 
     [super viewDidLoad]; 


     UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(locationNameTapped:)]; 
     tapGestureRecognizer.numberOfTapsRequired = 1; 
     _background.userInteractionEnabled=YES; 
     _background.tag = 0; 
     [_background addGestureRecognizer:tapGestureRecognizer]; 
    } 

    - (void)locationNameTapped:(UITapGestureRecognizer*)gesture 
    { 
      if(gesture.view.tag == 0) 
     { 
         NSLog(@"image tapped"); 

     } 
    } 
0

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

0

Ваш код верен, как бы там ни было проблема с добавлением UIImageView к родительскому мнению или другой вид прикрывает его попробовать этот код, если другой взгляд над ним

[parentView bringSubviewToFront:childView]; 

или чек это добавляется к его родителям смотреть правильно или нет

Смежные вопросы