2011-07-08 14 views
11

UITapGestureRecognizer kullanıyorum çünkü UILabel'lerim için bir kapsayıcı olarak çalışan bir UIScrollView kullanıyorum. Temel olarak argümanlar ile bir eylem yöntemi kullanmaya çalışıyorum, böylece ben örn. UILabel'in bir dokunuşla tetiklediğine bağlı olarak hangi işlemin gerçekleştirileceğini öğrenmek için myLabel.tag değerini eylem yöntemine gönderin.UITapGestureRecognizer initWithTarget: action: argüman alma yöntemi?

Bunu yapmanın bir yolu, UILabel s gibi birçok işlem yöntemine sahip olmaktır, ancak bu kod çok "güzel" değildir. Elde etmek istediğim, anahtar deyimleriyle yalnızca bir eylem yöntemine sahip olmak.

Bu mümkün mü yoksa böyle yapmak zorunda mıyım (iç çekiş):

UITapGestureRecognizer *myLabel1Tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myLabel1Tap)]; 
[myLabel1Tap addGestureRecognizer:myLabel1Tap]; 

UITapGestureRecognizer *myLabel2Tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myLabel2Tap)]; 
[myLabel1Tap addGestureRecognizer:myLabel2Tap]; 

UITapGestureRecognizer *myLabelNTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myLabelNTap)]; 
[myLabel1Tap addGestureRecognizer:myLabelNTap]; 

- (void)myLabel1Tap { 
// Perform action 
} 

- (void)myLabel2Tap { 
// Perform action 
} 

- (void)myLabelNTap { 
// Perform action 
} 

cevap

17

için çeşitli etiket Superview olan görünümüne tek jest tanıyıcı ekle Seçicideki yarı sütunu mu unuttun?
+0

yapmadıysanız – alecnash

5

kullanabilirsiniz sadece bir UITapGestureRecognizer ve jest işleyicisinde (senin myLaberXTap), sözdizimi vardır ki:

- (void)handleGesture:(UITapGestureRecognizer*)gestureRecognizer { 
    ... 
} 

kullanım gesture.view üzerinde çalıştığınız görmek olduğunu bilmek. Eğer hareketini işlemek Sonra, etiket aday belirlemek

UITapGestureRecognizer *myLabelTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myLabelTapHandler:)]; 
[myLabelParent addGestureRecognizer:myLabelTap]; 

:

-(void)myLabelTapHandler:(UIGestureRecognizer *)gestureRecognizer { 
    UIView *tappedView = [gestureRecognizer.view hitTest:[gestureRecognizer locationInView:gestureRecognizer.view] withEvent:nil]; 

    // do something with it 
} 
İlgili konular