我正在使用XCode 4.5.1。以编程方式创建的UIImageView上未触发的UITapGestureRecognizer
我的.h文件和.m文件开始在viewDidLoad
添加<UIGestureRecognizerDelegate>
@interface FirstViewController()
@property (nonatomic, strong) UIImageView *img1;
@end
然后,创建UIImageView
编程像
self.img1 = [[UIImageView alloc] initWithFrame:CGRectMake(50, -30, 44, 44)];
[self.img1 setImage:[UIImage imageNamed:@"image1.png"]];
[self.img1 setAlpha:0.8];
[self.img1 setHidden:NO];
[self.img1 setUserInteractionEnabled:YES];
[self.img1 setTag:901];
然后
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(guessTapObject:)];
tap.numberOfTapsRequired = 1;
tap.numberOfTouchesRequired = 1;
tap.delegate = self;
[self.img1 addGestureRecognizer:tap];
[self.view addSubview:self.img1];
[self.view bringSubviewToFront:self.img1];
并在末尾
- (void)guessTapObject:(UITapGestureRecognizer *) gesture
{
// guessing the image
UIImageView *tapImageView = (UIImageView*) gesture.view;
NSLog(@"Gesture Tag: %d", tapImageView.tag);
}
我有4个不同的图像,并以编程方式创建它们,如上所述。并应用动画从上到下移动它们。
我希望当用户点击图像,它应该动画和消失(我知道代码)。但代码不会触发轻击事件。我把断点放在guessTapObject
函数的开头,但不要去那里。
在UITapGestureRecognizer
声明中,调试显示guessTapObject
已附加到识别器以执行轻击操作。
请帮助为什么龙头事件不会触发其选择器的方法?
感谢您的帮助提前。
编辑: 我也试图与for循环中分别具有手势识别每一个ImageView的
for (UIView * view in self.view.subviews) {
if (view.tag > 900){
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(guessTapObject:)];
tap.numberOfTapsRequired = 1;
tap.numberOfTouchesRequired = 1;
// tap.delegate = self;
[view addGestureRecognizer:tap];
NSLog(@"tapView: %@", tap.view);
NSLog(@"tap: %i", tap.enabled);
}
}
我试过你发布的代码,它对我来说工作正常。我正在回调。如果您使用多个图像,则需要创建不同的UITapGestureRecognizer。对于一张图片,代码应该可以正常工作,请检查是否有任何东西是零,或者你的代码没有被调用。 – Amit 2013-04-23 10:02:23
这是行之有效的,确保在你将它设置为-30时检查你正在点击的图像,检查一下。 – 2013-04-23 10:05:05
@ amit3117 ....我尝试使用for循环,为每个图像添加单独的gesturerecognizer,但在我的结尾不起作用。 – eagle 2013-04-23 10:15:01