2014-02-20 1 views
0

Я попытался настроить простой UITapGestureRecognizer на UILabel, но он не работает. Ничто не кажется признанным, и ничего не записывается в журнал.пытается добавить UITapGestureRecognizer, но не работает

в методе вызывается из viewDidLoad

UILabel *miTN = [[UILabel alloc] initWithFrame:CGRectMake(300, 100, 150, 15)]; 
    [miTN setUserInteractionEnabled:YES]; 
    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized)]; 
    [miTN addGestureRecognizer: tapRecognizer]; 
    [miView addSubview:miTN]; 

    ... later 

    - (void)tapRecognized:(id)sender 
    { 
    NSLog(@"that tap was recognized"); 
    } 

Кроме того, это называется в ответ на вызов асинхронной сети. Может ли это вызвать проблему? Есть ли другая проблема, которая может вызвать isssue? Я не совсем уверен, каким будет первый шаг для отладки - я проверил Color Blended Layers, чтобы убедиться, что они были ovrelapping, но не кажутся.

+0

Какой вид «miView»? Вы видите вид на экране? Если это портфолио iPhone, вы получили его начало с горизонтальной ориентацией 20 пикселей с правой стороны экрана. – sooper

+0

это всего лишь UIView - одна из возможных проблем заключается в том, что этот код существует в блоке обратного вызова, но я думаю, что shoudl будет сохранен. Этикетки хорошо написаны в симуляторе. – timpone

+0

Будут ли добавлены какие-либо другие жесты или какие-либо родительские представления? – sooper

ответ

1

Вы должны добавить UIGestureRecognizerDelegate в список протоколов для ViewController класса

@interface TSViewController : UIViewController <UIGestureRecognizerDelegate> 

и вставить строку:

tapRecognizer.delegate = self; 

и заменить

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized)]; 

в

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)]; 
+0

Вы уверены, что это необходимо? OP не использует какие-либо методы делегата. – sooper

+0

можно попробовать. Я уверен. – stosha

+0

@sooper о делегате вы можете прочитать http://stackoverflow.com/questions/11355671/how-do-implement-the-uitapgesturerecognizer-into-my-application – stosha

0

В Swift вы должны включить, выполнив следующие действия.
yourLabel.isUserInteractionEnabled = true