是否可以只分配一个UIPanGestureRecognizer并附加到多个视图?我有多个用户可以移动的屏幕UIImageView对象(平移)。如果我正在进行alloc并将相同的UIPanGestureRecognizer对象附加到所有视图,那么平移手势仅适用于最后附加的视图。我通过制作UIPanGestureRecognizer的多个alloc / init来做一个解决方法,我的意思是每个视图有一个不同的UIPanGestureRecognizer对象。这是代码:
- (void)viewDidLoad
{
[super viewDidLoad];
UIPanGestureRecognizer * pgr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(updateImagePosition:)];
[self.panningBtn1 addGestureRecognizer:pgr];
[pgr release];
pgr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(updateImagePosition:)];
[self.panningBtn2 addGestureRecognizer:pgr];
[pgr release];
...
PS。我也启用了MultipleTouchEnabled& UserInteractionEnabled。还有更优雅的解决方案吗?
答案 0 :(得分:4)
否 - 每个UIGestureRecognizer
只能属于一个视图。只需使用相同的属性创建多个并将它们分配给不同的视图。
我建议在方法中创建手势识别器:
-(UIGestureRecognizer *)myGRMethod {
UIPanGestureRecognizer *pgr = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(updateImagePosition:)];
return [pgr autorelease];
}
然后只是做
for (UIView *view in views) {
[view addGestureRecognizer:[self myGRMethod]];
}