ios - UIScrollView 中的 UIScreenEdgePanGestureRecognizer

标签 ios uiscrollview mkmapview uigesturerecognizer

我有一个带有 3 个 View 的水平 ScrollView 。第一个 View (最左侧)是 map View 。我想要的功能是用户只能通过从最右侧边缘滑动来进入第二个 View ,因为我希望其他手势来操作 map 。但是,从第二个和第三个 View 中,他们可以通过在 View 上的任意位置滑动来向左或向右移动。我已经搜索了如何做到这一点,并且对我的具体情况没有运气。

我不知道从哪里开始,所以如果有人能指出我正确的方向,那就太好了。

到目前为止,我已经尝试过:

在第一个 View 上禁用滚动并添加代码:

let edgeRecognizer = UIScreenEdgePanGestureRecognizer(target: firstView, action: "goToSecondView:")
    edgeRecognizer.edges = .Right

func goToSecondView(){
    scrollView.contentOffset = CGPoint(x: self.scrollView.contentSize.width/3, y: scrollView.contentOffset.y)
}

最佳答案

真的很简单,只需将此委托(delegate)功能放在您的UIScreenEdgePanGestureRecognizer 上即可。并设置 UIGestureRecognizerDelegate
使用 Xcode 8 和 Swift 3 :)

您需要这 3 个委托(delegate)功能。

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return false
}

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive press: UIPress) -> Bool {
    return false

}

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}

关于ios - UIScrollView 中的 UIScreenEdgePanGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34712433/

相关文章:

ios - 使用自定义单元格在 UITableView 中展开 UILabel 时 Swift 崩溃

ios - 调整 UIView 的大小以便 UIScrollView 可以工作

ios - 我如何强制将值分配给常量?

ios - 如何在 objective-c 中逐行解析JSON文件

ios - 使用自定义边框在 UITextField 上 float UILabel

ios - UIScrollview 为 subview 添加一些额外的空间

ios - UIScrollView 和问题设置 UIPageControl 的当前页面

iOS 6 addAnnotation EXC_BAD_ACCESS,但在 iOS 7 上没问题

objective-c - 枚举 - 发送到实例的无法识别的选择器

ios - 无论 map 提供商如何,一个 CLlocation 2D 是否唯一对应于地球上的一个地方?