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的主要内容,如果未能解决你的问题,请参考以下文章