如何将 UIView 中的一部分用于手势识别器?

Posted

技术标签:

【中文标题】如何将 UIView 中的一部分用于手势识别器?【英文标题】:How can I except a part from a UIView for a gesture recognizer? 【发布时间】:2013-10-22 14:22:23 【问题描述】:

我正在开发一个应用程序,我想使用UISwipeGestureRecognizer 滚动浏览不同的UIViewControllers。 一切正常,但有一件事我找不到解决方案。

我像这样添加UIGestureRecognizers

- (void)viewDidLoad 
[super viewDidLoad];
UISwipeGestureRecognizer *swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeft)];
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.view addGestureRecognizer:swipeLeft];

UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight)];
[swipeRight setDirection:UISwipeGestureRecognizerDirectionRight];
[self.view addGestureRecognizer:swipeRight];

现在我想知道是否可以将self.view 的一部分除外,以便可以滑动到不同的视图。 我想围绕UISwitch 执行此操作。

有人可以帮帮我吗?

最好的问候,

卢卡斯去

【问题讨论】:

【参考方案1】:

您可以使用另一个UIView 并将其添加到self.view。那些UISwipeGestureRecognizer 不能在UIView 中工作。

【讨论】:

所以我必须在 UISwitch 上方和它周围的地方添加另一个 UIView? 你可以把你的 UISwitch 放在那个视图里 好的,谢谢!我会试试的。【参考方案2】:

向开关添加另一个UISwipeGestureRecognizer,然后在您原来的滑动手势识别器上,调用开关的新识别器上的requireGestureRecognizerToFail:

希望这是有道理的,这是一个如此冗长的类...:\

【讨论】:

【参考方案3】:

我建议你使用手势识别器的委托方法:gestureRecognizer:shouldReceiveTouch:。 在touch 参数中,您有很多信息,例如屏幕中的位置。您可以使用此位置并测试它是否在开关框架上方。返回yesno,具体取决于您是否要触发与手势识别器关联的选择器。

【讨论】:

以上是关于如何将 UIView 中的一部分用于手势识别器?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式触发 UIView 的点击手势识别器

识别 UIView 中的滑动手势以使用手势识别器滚动滚动视图

更改手势识别器的索引

获取点击手势识别器的标签或索引

手势识别器和 TableView

重叠视图中的 ios 手势识别器