iOS - 手势和uislider

Posted

技术标签:

【中文标题】iOS - 手势和uislider【英文标题】:iOS - Gesture and uislider 【发布时间】:2012-05-23 08:57:58 【问题描述】:

我正在为 ios 开发一个应用程序,其菜单类似于 Facebook 和 ECSlidingViewController,这是一个管理应用程序水平手势的好项目。 当我将 UISlider 放入视图时,问题就出现了......我不能很好地触摸它,因为滑块的滑动运动被误认为是向左/向右滑动。 This 是包含所有方法的 che 类的头文件,这是放在主视图中的代码:

if (![self.slidingViewController.underLeftViewController isKindOfClass:[MenuViewController class]]) 
    self.slidingViewController.underLeftViewController  = [self.storyboard instantiateViewControllerWithIdentifier:@"Menu"];
  

  if (![self.slidingViewController.underRightViewController isKindOfClass:[UnderRightViewController class]]) 
    self.slidingViewController.underRightViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"UnderRight"];
  

  [self.view addGestureRecognizer:self.slidingViewController.panGesture];

最后一行是将手势集成到应用程序上的代码。 有没有办法只在uislider上禁用手势?

非常感谢。

【问题讨论】:

【参考方案1】:

您可以将代理添加到 self.slidingViewController.panGesture 并让它忽略 UISlider 视图上的触摸。以下问题和答案包含您需要的所有信息:Pan gesture interferes with UISlider。

【讨论】:

我刚刚检查了 ECSlidingViewController,他们没有为 panGesture 分配委托,因此您可以毫无问题地使用上面链接的答案。如果他们将来更改代码以使用UIGestureRecognizerDelegate,那么您的代码将会中断。 对不起,我在英语和 Obj-c 方面有一些困难:D 我必须创建 ECSlidingViewController 的委托吗?然后,我必须实现这样的东西: if ([self.slidingViewController.panGesture isKindOfClass:[UISlider class]]) self.slidingViewController.panGesture.enabled=NO; ? 所以你的主视图控制器需要是UIGestureRecognizerDelegate,然后你需要在类中添加一个名为- (void)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldRecieveTouch:(UITouch*)touch的方法。此方法的代码在链接的问题中。将手势识别器添加到主视图后,添加以下行:self.slidingViewController.panGesture.delegate = self;

以上是关于iOS - 手势和uislider的主要内容,如果未能解决你的问题,请参考以下文章

iOS解决单击手势和UITableView的点击事件冲突

iOS 常用手势

iOS 轻击触摸和手势的检测

iOS5 上的 UIGestureRecognizerDelegate 和手势

iOS - 手势和uislider

iOS开发之手势识别