为什么我的水龙头不被识别?
问题描述:
我用一个包含图像视图的笔尖创建了一个小样本项目。在我的视图控制器代码中,我在图像视图中添加了一个手势识别器来检测水龙头。但它从不调用处理程序方法。为什么我的水龙头不被识别?
这里的标题:
#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:当我触摸图像时被调用?
答
我还没有使用过手势,但我知道UIImageView
默认情况下不启用用户交互。
新图像视图对象配置为 默认情况下忽略用户事件。 如果要处理UIImageView的 自定义子类中的事件,则 必须在初始化对象后明确将userInteractionEnabled属性的值更改为 YES。
哦,这很有趣。等一下,让我试试吧。 – 2011-04-05 19:37:16
就是这样!谢谢。一旦堆栈溢出定时器允许我将立即接受。 – 2011-04-05 19:39:27
不客气。这个值也可以在Interface Builder中设置。有一个被称为交互的部分。 – Joe 2011-04-05 19:42:12