我有五个视图,我已经应用它们UIPanGestureRecognizer
放置在彼此之间有一定距离的位置,从顶部具有相同的 Y 轴(盒型形状)。
我正在拖动视图并在 x 轴上平移。问题是我可以通过多次触摸拖动多个视图。我想限制一次拖动一个视图。
我尝试使用UIPanGestureRecognizer
属性
pan.maximumNumberOfTouches=1;
但这只是单一视图。有任何想法吗?
我有五个视图,我已经应用它们UIPanGestureRecognizer
放置在彼此之间有一定距离的位置,从顶部具有相同的 Y 轴(盒型形状)。
我正在拖动视图并在 x 轴上平移。问题是我可以通过多次触摸拖动多个视图。我想限制一次拖动一个视图。
我尝试使用UIPanGestureRecognizer
属性
pan.maximumNumberOfTouches=1;
但这只是单一视图。有任何想法吗?
也试试这个
假设您在 viewController 的视图中添加了所有这五个视图。然后执行以下操作;
myViewController.view.multipleTouchEnabled = NO;
这使得 mainView 只处理第一次触摸,并且只有第一次触摸会沿着层次结构向下流动(即到 subViews 和他们的 gestureRecognizers )
希望这有效。
提醒:
在包含 5 个视图的 mainView 或 mainViewController 的界面中定义它。
@property(nonatomic,retain)UIPanGestureRecognizer *currentRecognizer;
-(void)on_pan_gesture:(UIPanGestureRecognizer*) panGestureRecognizer
{
if(self.currentRecognizer != nil && [self.currentRecognizer isEqual:panGestureRecognizer])
{
//do the task of the selected gesture recognizer
//this recognizer will be active till the touches are not ended or cancelled.
//hence on the first recognizer will work.
}
else
{
//if there is not currentRecognizer then set this recognizer to be current.
self.currentRecognizer = panGestureRecognizer;
}
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
self.currentRecognizer = nil;
}
-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
self.currentRecognizer = nil;
}
使用手势识别器的委托方法
gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
使其返回 NO。