0

Иногда метод выбора «tagClickAtIndex» не получает вызова.iOS UITapGestureRecognizer не работает иногда

UILabel* label = [[UILabel alloc] init]; 
label.userInteractionEnabled = YES; 
UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tagClickAtIndex:)]; 
[label addGestureRecognizer:tapGesture]; 



-(void)tagClickAtIndex:(UITapGestureRecognizer*)gesture 
{ 
    NSMutableDictionary *mutDict = [[[NSMutableDictionary alloc]initWithDictionary:[_tagArray objectAtIndex:gesture.view.tag]] mutableCopy]; 
    [mutDict setValue:[NSNumber numberWithLong:gesture.view.tag] forKey:@"index"]; 
    [self.delegate tagClickAtIndex:mutDict]; 
} 
+0

tushars проверить мои ans wer.It работает отлично. – user3182143

ответ

1

вы забыли установить рамку label, причина его определить только активная область

label.frame = CGRectMake(0,0,200,30) 
[yourMainview addSubView:label] 

и установить, если вам нужно

tapGesture.numberOfTapsRequired = 1; 
+0

могут быть этими сценариями, это помогает вам https://developers.google.com/maps/documentation/ios-sdk/urlscheme –

0

Если вы программно создать UILabel, ваш выше код не работает. Я пробовал ваш код.

UILabel* label = [[UILabel alloc] init]; 
label.userInteractionEnabled = YES; 
UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tagClickAtIndex:)]; 
[label addGestureRecognizer:tapGesture]; 

Он не показывает anything.As вы не установили рамку и добавить вид этикетки, он не показывает.

Итак, я попытался создать UILabel freshly.I установить фрейм, addSubView в self.view, и я установил цвет, а также количество кранов для метки.

UILabel* label = [[UILabel alloc] init]; 
label.frame = CGRectMake(30, 100, 200, 100); 
label.text = @"click me"; 
label.textColor = [UIColor blueColor]; 
[self.view addSubview:label]; 

Теперь Нажмите жест распознаватель для этикетки

UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tagClickAtIndex:)]; 
tapGesture.numberOfTapsRequired = 1; 
label.userInteractionEnabled = YES; 
[label addGestureRecognizer:tapGesture]; 

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

-(void)tagClickAtIndex:(UITapGestureRecognizer*)gesture 
{ 
    NSLog(@"The tap is called"); 
    ......... 
} 

отпечатанной заявления показывает

The tap is called