2011-04-05 36 views
2

我用一個包含圖像視圖的筆尖創建了一個小樣本項目。在我的視圖控制器代碼中,我在圖像視圖中添加了一個手勢識別器來檢測水龍頭。但它從不調用處理程序方法。爲什麼我的水龍頭不被識別?

這裏的標題:

#import <UIKit/UIKit.h> 

@interface TapExperimentViewController : UIViewController { 
    UIImageView *imageView; 
} 

@property (retain) IBOutlet UIImageView *imageView; 

- (void)handleTap:(UIGestureRecognizer *)sender; 

@end 

而這裏的實現文件:

#import "TapExperimentViewController.h" 

@implementation TapExperimentViewController 

@synthesize imageView; 

- (void)dealloc { 
    [imageView release]; 
    [super dealloc]; 
} 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] 
            initWithTarget:self 
            action:@selector(handleTap:)]; 
    [self.imageView addGestureRecognizer:tap]; 
    [tap release]; 
} 

- (void)viewDidUnload { 
    [super viewDidUnload]; 
    self.imageView = nil; 
} 

- (void)handleTap:(UIGestureRecognizer *)sender { 
    if (sender.state == UIGestureRecognizerStateEnded) { 
     NSLog(@"tap"); 
    } 
} 

@end 

我確信,出口連接。爲什麼不是handleTap:當我觸摸圖像時被調用?

回答

5

我還沒有使用過手勢,但我知道UIImageView默認情況下不啓用用戶交互。

新圖像視圖對象配置爲 默認情況下忽略用戶事件。 如果要處理UIImageView的 自定義子類中的事件,則 必須在初始化對象後明確將userInteractionEnabled屬性的值更改爲 YES。

+0

哦,這很有趣。等一下,讓我試試吧。 – 2011-04-05 19:37:16

+0

就是這樣!謝謝。一旦堆棧溢出定時器允許我將立即接受。 – 2011-04-05 19:39:27

+0

不客氣。這個值也可以在Interface Builder中設置。有一個被稱爲交互的部分。 – Joe 2011-04-05 19:42:12

相關問題