2011-05-03 33 views
6

'u içeren UIScrollView'da tek dokunuş algılaması UIScrollView'dan gelen UIImageView öğesini tutmaya çalışıyorum.'n' UIImageViews

Web'de yukarıdakileri başarmanın 2 yolunu buldum.

İlk yöntem: scrollviewer'a eklemeden önce uiimageview üzerinde bir dokunma hareketi oluşturun.

Bu yöntem benim için çalışmadı. handleSingleTap yöntemi hiçbir zaman aranmaz.

Neyi yanlış yaptığım/neden çalışmadığı hakkında fikirlerim yok.

UITapGestureRecognizer *singleTap = 
    [[UITapGestureRecognizer alloc] initWithTarget:self 
    action:@selector(handleSingleTap:)]; 
     singleTap.numberOfTapsRequired = 1; 
     [imageView addGestureRecognizer:singleTap]; 
     [singleTap release]; 

     [framesSourceScrollview addSubview:imageView]; 
     [imageView release]; 

      - (void)handleSingleTap:(UIGestureRecognizer *)sender 
      { 
       NSLog(@"image tapped!!!"); 
      } 

2 Yöntem: Bu yöntemi kullanarak

@interface SingleTapScrollViewer : UIScrollView { 
} 
@end 

@implementation SingleTapScrollViewer 

- (id)initWithFrame:(CGRect)frame 
{ 
    return [super initWithFrame:frame]; 
} 

- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event 
{ 
    // If not dragging, send event to next responder 
    if (!self.dragging) 
     [self.nextResponder touchesEnded: touches withEvent:event]; 
    else 
     [super touchesEnded: touches withEvent: event]; 
} 
@end 

In the ViewController 

- (void) touchesEnded: (NSSet *) touches withEvent: (UIEvent *) event 
{ 
    // Process the single tap here 
    NSLog(@"Scroll view single tapped. touches count : %d", touches.count); 
UITouch *touch = [touches anyObject]; 
    UIImageView *imgView = (UIImageView*)touch.view; 
    NSLog(@"tag is %@", imgView.tag); 
} 

alt sınıf UIScrollView, touchesDown cevap denilen olsun demek ama '[dokunuşlar anyobject]' vurulmuştur hangi UIImageView değildir.

Her UIImageView üzerinde 'tag' ayarlamayı denedim, artan bir sayımla scrollview'a ekliyorum ama 0'a geri dönüyorum, hangi görüntüye dokununcaya dokunun.

Genel olarak kakao için yeni ve bu yanıtlayıcıyı başka bir şekilde nasıl kullanacağımı bilmiyorum.

Her türlü öneri/ipucu harika olurdu.

şimdiden teşekkürler. UIImageView'de userInteractionEnabled = YES ayarını

cevap

12

yaptınız. Varsayılan olarak kapalı.

+0

Whoa !! Jason, teşekkürler bir demet. Bunun hakkında hiçbir fikrim yoktu. Bu yardımcı olur!!!. Kodda 'n' uiimageviewers yaratıyordum. Bu standart kakaodaki tüm kontrollerde mi? –

+0

no, normalde açık. Normalde etkileşim olmayan görünümlerden sadece birkaçı devre dışı bırakıldı. UILabel, akla ilk gelen UIImageView. –

+1

, bir kullanıcı UIView'e bir UIGestureRecognizer eklediyse, userInterationEnabled'ın otomatik olarak ON'a döneceğini düşünür. Ancak tekrar Apple'dan hiç kimse benim fikrimi sormaz. :-) –

İlgili konular