UIScrollView 滚动时取消 UIPageViewController 手势

2023-12-07

我有一个UIPageViewController它负责翻我的“书”的页面。然而,每一本书的页面都是一个ViewController with a UIScrollView as a subview. The UIScrollView只能垂直滚动,因为contentSize。问题是当用户滚动时scrollview垂直方向上,如scrollview仍在滚动/减速,用户无法翻页。查看此情况的一个非常简单的方法是滚动页面,然后尝试点击视图的边缘。这通常会更改页面,并且当scrollview没有动。然而,当它移动时,点击会导致滚动视图停止移动而不是翻页。

我该如何取消scrollviews手势,如果UIPageViewController是否尝试使用手势翻页,通过点击或平移页面来引发翻页动画?

有关我想要实现的行为的示例,请查看 Twitter 在 iPhone 上的官方客户端。 当提要仍在因滚动而减速时,可以从时间轴滑动到发现。


A UIScrollView滚动事件会阻止其他事件UIView动画,所以就 Twitter 而言,他们可能会在滑动视图之前取消滚动。正如您在问题中所问的:

“如果 UIPageViewController 尝试通过点击或平移页面来使用手势翻页以引发翻页动画,如何取消滚动视图手势?”

我会建议一个解决方法。

而不是依赖于UIPageViewController其固有的UIPanGestureRecognizer,包括你自己的UIPanGestureRecognizer在页面视图中,以便当在页面的适当部分检测到平移并在适当的方向上执行平移时,新的UIPanGestureRecognizer覆盖UIPageViewController's UIGestureRecognizers 并触发必要的操作。具体来说,您需要:

(1) 使用停止滚动动画

CGPoint offset = scrollView.contentOffset;
[scrollView setContentOffset:offset animated:NO];

(2) 使用编程方式翻页

- (void)setViewControllers:(NSArray *)viewControllers direction:
  (UIPageViewControllerNavigationDirection)direction animated:
  (BOOL)animated completion:(void (^)(BOOL finished))completion;

这样滚动动画就会停止,翻页也可以在一个流畅的平移手势内完成。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIScrollView 滚动时取消 UIPageViewController 手势 的相关文章

  • 翻转通过CVOpenGLESTexture获得的OpenGL ES纹理

    在我尝试 OpenGL ES 2 0 的最后一天 当我尝试将两个投影纹理 一个精灵动画和一个视频文件纹理 应用到天空盒时 我开始像存根一样简单地用手敲击键盘 奇迹般地它就成功了 一切都开始工作了 然而 从视频文件创建的纹理是颠倒的 换句话说
  • 如何在 iOS 中以编程方式在 UITableViewCells 中添加图像

    我需要添加不同的图像UITableViewCells以编程方式 我怎样才能做到这一点 我正在尝试一些代码 但图像不显示在UITableViewCells 这是我下面的代码 void viewDidLoad arrImages NSMutab
  • 无法更改 UITabBarItem.image:CSI 中不支持的像素格式

    我试图通过代码更改选项卡栏中显示的图像 我目前正在使用 Swift 和 Xcode 6 beta 3 我导入了 tabBarImage png 并 电子邮件受保护 cdn cgi l email protection在 Images xca
  • 在 Cordova / PhoneGap 中生成 iOS 和 Android 图标

    我有一个新创建的 Cordova 项目 其中包含以下内容config xml设置 使用来自http docs phonegap com en edge config ref images md html http docs phonegap
  • Xamarin Form - IOS:如何检测 UIView 大小已更改

    我使用 ContentView 创建了一个 Xamarin 表单 并为 Android 创建了一个渲染器 现在我必须为 IOS 创建一个渲染器 在 android 渲染器中 我可以重写 onSizeChanged 并将这些宽度 高度值传递给
  • 错误 ITMS-90596:“捆绑包无效。无法处理“Payload/ExpoKitApp.app/.bundle/Assets.car”处的资产目录。”

    问题摘要 我想向Apple App store TestFlight 提交一个应用程序 我正在使用 Transporter v1 1 提交应用程序 在提交过程中 我在 Transporter 中收到以下错误 请注意 我在此过程中没有使用 X
  • 有没有办法反转 SKSpriteNode 的颜色

    我想知道是否可以反转 SKSpriteNode 的颜色 或调整色调 您可以通过应用带有 SKEffect 节点的 CIFilter 来反转颜色 像这样的东西应该有效 SKEffectNode effectNode SKEffectNode
  • Swift - 带循环的多个链 http 请求

    两天以来 我感觉我正在搜索整个网络来解决多个 http 请求的问题 所以我的工作流程如下所示 将图像上传到服务器 响应 XML 格式和任务 ID 使用任务 ID 向服务器发出 GET 请求 以检查该任务的状态 响应 XML 格式 其中状态可
  • 如何在flutter插件中调试iOS原生代码?

    我想知道如何在插件中调试 flutter iOS 代码 我可以打开每当您创建插件时生成的示例应用程序 但我将插件代码视为二进制框架 因此我无法调试它 对于 android 这相当简单 我只需打开 A S 中的 android 文件夹即可 插
  • 编程界面方向更改不适用于 iOS

    因此 我有一个项目 当用户按下按钮时 我需要强制改变方向 我创建了一个github 上的示例应用程序 https github com vradenburg ForcedOrientationChange来演示这个问题 interface
  • iOS Swift 3 以编程方式将文件复制到 iCloud Drive

    在我的我有文档下载选项 当用户从我的应用程序下载文档时 我需要将其存储到已安装在用户手机中的用户 iCloud Drive 我已在 Web 和 Xcode 中配置了 iCloud 但问题是我无法将文件正确复制到 iCloud Drive 文
  • NSString 到 TimeInterval

    我有一个 NSString 的格式00 00 00 00最初获得自 dateFormatter setDateFormat HH mm ss SS 我如何获取该字符串并将其转换为 TimeInterval 如果您 100 绝对肯定这种格式永
  • 我应该在哪里保存想要长期保留的数据和文件,以及如何防止 iCloud 备份它们

    我有任意类型的文件 包括核心数据存储库 我需要保留这些文件 并且不要让 iOS 删除它们 通常 我不希望 iCloud 备份这些文件 我应该把它们保存在哪里 iOS5 0 及更早版本 5 0 1 和 5 1 及更高版本中保存文件的本地更改主
  • Sqlite3 查询在 iOS 8.2 下变得非常慢

    我制作了一个可以在应用程序内使用 sqlite 数据库的应用程序 在 iOS 8 2 之前 它工作得很好 但更新后 查询方法的工作速度慢了大约 100 倍 我试图查找有关此问题的信息 但尚未找到任何信息 有人有同样的经历吗 这是我的方法 到
  • Cordova 构建 iOS 应用程序并打开模拟器,但未安装

    我正在 MacOS 上用 Cordova 制作一个 iOS 应用程序 当我跑步时cordova emulate ios该应用程序会构建并打开 iPhone X iOS 11 4 的模拟器 但它从未在模拟器中安装该应用程序 它仅显示模拟器主屏
  • NSXMLParser 解析使用 Windows-1256 编码的 xml 文件

    我想解析 Windows 1256 编码的 rss 文件 但解析器没有读取它 我用 UTF8 编码做了很多解析 但只有这个不起作用 为什么 带有 Windows 1256 的 rss 文件 http youm7 com Rss asp 解决
  • iOS 框架问题:类在两者中均实现

    我正在开发一个使用第三方框架类的iOS框架项目 所以我在下面添加了第三方框架链接的框架和库部分 当我在 iOS 应用程序项目中添加自定义框架时 每个类都会收到此警告 objc 3139 类 class name 在两者中均实现 privat
  • 在 UIScrollView Swift 中禁用垂直滚动

    不要将此问题标记为重复 我读了很多问题 但没有找到问题的答案 我的问题如下 我有一个UIScrollView它应该只水平滚动 这里它垂直滚动 20px 奇怪的事实 它似乎与状态栏的高度相同 我尝试打印内容大小 y 偏移量和高度UIScrol
  • 如何在 iOS 上反转使用 CoreGraphics 渲染的 pdf 上的文本颜色?

    我正在使用开源 PDF 查看库 VFR PDF Readerhttps github com vfr Reader https github com vfr Reader 我正在尝试实现 夜间模式 或黑色背景与白色文本 我可以将背景设置为我
  • 如何在iOS中像Android一样实现菜单

    我需要为 iOS 实现菜单 例如android menu表示导航按钮栏 右侧 如果我点击该菜单就会显示 我正在使用故事板 所以你想要这样的东西 甚至可以在风景中使用 我想我要花很长时间来解释 D 基本上我创建了一个自定义 UINavigat

随机推荐

  • Angular2中如何动态添加克隆节点(相当于cloneNode)

    在 Angular2 中 在某些情况下我需要复制节点而不是移动它 该节点具有 angular2 属性 因此 cloneNode 不起作用 我该怎么做 什么不起作用 let el
  • 将 BSTR 从 C++ DLL 函数传递到 VB6 应用程序

    我的 VB6 应用程序中有以下代码 Private Declare Function FileGetParentFolder Lib Z FileIO dll ByVal path As String As String Output Ad
  • 在 SVN 中创建包含内部版本号和分支名称的文件

    目前我工作的地方没有大量的部署控制 虽然有一个长期计划来创建一个处理部署的构建脚本 但目前我们只是发布我们的解决方案 然后将它们复制到服务器 如果有一个文本文件或类似的文件包含修订号和分支名称 作为实时系统上当前运行的版本的日志 这将非常有
  • Windows 中 sys/mman.h 的等效项

    我在尝试在 Win64 上编译 C 代码时遇到问题 更具体地说 编译器找不到sys mman hheader 据我所知只能在 Unix 环境中找到 我已经知道这是处理内存分配的 我可以使用 Windows 的等效工具来移植代码 第一次尝试
  • Swift 通用协议函数参数

    这似乎对我有用 我想做的就是让Rule协议能够performRule在任何采用该规则协议的结构上 然后返回一个布尔值 但是 按照我的代码当前的方式 我无法访问performRule value value范围 我觉得我错过了一个重要的概念或
  • 轮询 I/O (MIPS)

    我正在尝试在 MIPS 中编写一个程序 该程序使用轮询从键盘读取字符 然后使用内置键盘和显示器 MMIO 模拟器显示它 不幸的是 我无法理解所使用的寄存器和控制位背后的概念 但一直试图从在线示例中找出答案 这是我到目前为止所写的内容 dat
  • 使用套接字通过 Tcp/IP 发送消息

    我正在尝试在客户端 服务器之间发送数据 数据看起来像 typedef Struct Message int id int message length char message str message 我在尝试着Write and Read
  • 当用户滚动离开时如何暂停 YouTube 嵌入

    我一直在尝试寻求帮助 以便在用户滚动离开时让视频暂停 我已经能够找到 html5 视频的帮助 但现在我还需要知道如何使用 youtube API 来实现同样的目的 我嵌入 YouTube 的 html 结构如下 div class ytub
  • HTML5 画布图像上的插图阴影

    我以前见过这个问题 但给出的答案是针对通过路径绘制的画布图像 但是我正在绘制图像 是否有可能创建一个inset shadow context shadowOffsetX 0 context shadowOffsetY 0 context s
  • 如何在不移动其他元素的情况下放大div

    我怎样才能停止这个 div 将所有元素移动到您选择特定价格的位置下方 要了解我在说什么 请查看此链接 查看价格表样式3在其下方 您可以看到 当您选择某个价格表时 下面的所有元素都会因弹出而移动 我希望能够使用此功能 但当然不能移动下面的所有
  • 多个单通道矩阵转换为单个多通道矩阵

    我正在使用带有矩阵的 opencv c api 我有 4 个单通道 Mat 我想将其合并为一个 4 通道矩阵 它基本上是我在 4 个矩阵中拥有的 rgba 通道 并且想要组合成一个 rgba 图像 矩阵 谁知道该怎么做 您可以使用简历 合并
  • DQL 选择具有一列 MAX 值的每一行

    使用 Symfony 2 和 Doctrine 我正在寻找一种方法来选择特定列中具有最大值的每一行 现在 我正在两个查询中执行此操作 一种获取表中列的最大值 然后我选择具有该值的行 我确信这可以通过一个查询来完成 搜索中 我发现了这个答案
  • 如何在 C# 中更改组合框的外观

    我尝试在 xaml 中将 ComboBox 背景 前景 borderbrush 设置为蓝色只是为了测试 但它仍然保持丑陋的灰色 我也尝试过使用资源字典 但它不想改变 这是我使用组合框的 XAML
  • Haskell - 在模式匹配中使用常量

    假设我有以下代码 文本在 lt gt 是简写 实际上不是代码的一部分 data A
  • matlab导入多张图像

    我有一组连续命名的 100 张 jpg 图像 我想将它们相加以获得单个图像 我已经看到答案了here 但它不跟我一起运行 发生了什么事 这是代码 im imread C Documents and Settings 1026175117 1
  • 如何从文件中读取位?

    我知道如何读取字节 x read number of bytes 但是如何读取 Python 中的位呢 我必须从二进制文件中仅读取 5 位 而不是 8 位 1 字节 有什么想法或方法吗 Python 一次只能读取一个字节 您需要读取一个完整
  • 无需按 Control 键即可选择多行

    我有一个网格视图 可以通过按控制键选择多行 是否可以在不按控制键的情况下实现相同的目的 由于 net 默认操作也会更新slectedrows你的datagridview你需要有一个数组来保留旧的选择 DataGridViewRow old
  • Fragment 和 FragmentActivity 有什么区别?

    我的问题是除了明显的继承差异之外 两者之间的主要区别是什么Fragment and FragmentActivity 每个类别最适合什么场景 我试图了解为什么这两个类别存在 A Fragment是一个的一部分Activity 其中有 它自己
  • 按图像路径在数据库中的 RDLC 报告上显示图像

    图像路径存储在SQL Server 2008数据库中 在我的 RDLC 报告上 我有一个图像字段 我已设置此字段以从数据库中的数据库列获取图像路径 我还在报告查看器中将 EnableExternalImages 属性设置为 true 我不知
  • UIScrollView 滚动时取消 UIPageViewController 手势

    我有一个UIPageViewController它负责翻我的 书 的页面 然而 每一本书的页面都是一个ViewController with a UIScrollView as a subview The UIScrollView只能垂直滚