禁用屏幕特定区域的 uipageviewcontroller 滑动

Posted

技术标签:

【中文标题】禁用屏幕特定区域的 uipageviewcontroller 滑动【英文标题】:disabling swiping on uipageviewcontroller for certain area of screen 【发布时间】:2015-05-22 01:06:57 【问题描述】:

我有一个 uipageviewcontroller,页面在屏幕上有一个 uitableview 区域。我希望用户只能浏览该 uitableview 之外的页面。

我似乎找不到这些手势识别器藏在哪里。我将它们设置为这样的代表:

self.view.gestureRecognizers = self.pageViewController?.gestureRecognizers
for gesture in self.view.gestureRecognizers!
            // get the good one, i discover there are 2
            if(gesture is UIPanGestureRecognizer)
            
                println("ispan")
                // replace delegate by yours (Do not forget to implement the gesture protocol)
                (gesture as! UIPanGestureRecognizer).delegate = self
            
        

我在日志中看到了 ispan,所以它似乎找到了一些 uipangesturerecognizer,但是当我像这样覆盖函数时:

func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool 
    println("gesture should begin")
    var point = gestureRecognizer.locationInView(self.view)
    return true

它根本没有打印出“手势应该开始”...我将课程设置为UIGestureRecognizerDelegate 我做错了什么?我猜我将错误的手势识别器设置为代表,如何将正确的手势识别器设置为代表?

【问题讨论】:

【参考方案1】:

这样的东西可以吗?

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool 

    if(touch.view == <your tableView>)
        return false
    else
        return true
    
 

您可能还需要测试它是哪个手势识别器(来自 pageView 或来自 tableView 的那个)。

【讨论】:

我认为这肯定行得通。问题是我无法调用任何委托方法。

以上是关于禁用屏幕特定区域的 uipageviewcontroller 滑动的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式禁用解锁屏幕

禁用和启用页面滚动 (Swift)

以编程方式截取特定区域的屏幕截图

将作为屏幕截图的特定区域的图片保存到所需路径

如何在swift 4中禁用otp屏幕中文本字段上光标的中间外观

IOS禁用Tab bar顶部的触摸区域