我正在开发一个需要添加几个UIImageViews的应用程序。 模态视图控制器具有不同的按钮。 当解雇模态视图控制器时,它发送按钮的标签,这有助于我们决定添加哪个UIImageView。
现在,当我添加第一个UIImageView时,所有手势都可以使用它。但是在添加第二个时,第一个会失去对触摸的响应。
添加UIImageView(Body:UIImageView)的代码是:
-(void) addBodyToStage:(int)index {
NSString * imageString = [NSString stringWithFormat:@"Body%i.png",index];
UIImage * image = [UIImage imageNamed:imageString];
Body * body = [[Body alloc] initWithImage:image];
//For Pan Gestures
[body setUserInteractionEnabled:YES];
[body addGestureRecognizer:panGesture];
[panGesture addTarget:body action:@selector(handlePan:)];
//For Pinch Gestures
[pinchGesture addTarget:body action:@selector(handlePinch:)];
[body addGestureRecognizer:pinchGesture];
//Adding to the view
[self.view addSubview:body];
}
答案 0 :(得分:0)
你是否在任何地方初始化手势识别器?看起来您可能会将相同的手势识别器重新用于不同的imageView。尝试为每个imageView实例化新的手势识别器
答案 1 :(得分:0)
相同的panGestureRecognizer和pinchGestureRecognizer(实例变量)已添加到所有imageViews。这本身没有问题,但我认为你需要为每个imageView设置不同的平移/捏合手势识别器。视图将保留手势手势识别器,以便您可以在此方法中添加代码。
开始
-(void) addBodyToStage:(int)index {
NSString * imageString = [NSString stringWithFormat:@"Body%i.png",index];
UIImage * image = [UIImage imageNamed:imageString];
Body * body = [[Body alloc] initWithImage:image];
//Alloc the pan/pinch gesture recognizers here
//remember to alloc/init/autorelease (if not using ARC)
//else just alloc init
//Remove the instantiation of those gesture recognizers in any other
//part of the code.
//For Pan Gestures
[body setUserInteractionEnabled:YES];
[body addGestureRecognizer:panGesture];
[panGesture addTarget:body action:@selector(handlePan:)];
//For Pinch Gestures
[pinchGesture addTarget:body action:@selector(handlePinch:)];
[body addGestureRecognizer:pinchGesture];
//Adding to the view
[self.view addSubview:body];
}
答案 2 :(得分:0)
手势识别器一次只能分配到一个视图。如果将它们分配给另一个视图,它们将从第一个视图中隐式取消分配。您需要为每个视图初始化手势识别器,或将手势识别器放在层次结构中较低的视图上,并使用手势识别器的view
属性来判断触摸了哪一个。