2011-04-05 68 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