- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
抱歉问了这么长的问题,但我觉得我应该传达我的尝试。
我有意见viewA
在导航 Controller 中。然后我添加一个 subview viewB
(包含 UITableView
)到 viewA
并偏移其原点高度,使其仅覆盖屏幕的一半(另一半从屏幕底部溢出)。我希望能够然后拖动此 viewB
向上但是当它碰到导航栏的底部时它会停止,并且当它碰到原点偏移点时向下拖动时也会停止。这是我成功实现的。
但是,我想要 UITableView
交互仅在 viewB
时启用处于其上部位置,因此不会响应任何其他位置的手势。本质上,拖动 viewB
向上,使其完全覆盖 viewA
应该启用与 UITableView
的交互.
这里棘手的部分是我希望它执行以下操作:
viewB
UITableView
处于其上方位置以覆盖屏幕内容偏移量为 0(即我们在表格顶部)并且用户向下平移手势,该手势不应与 UITableView
交互。但应该搬家viewB
向下。 UITableView
的交互。 . viewB
UITableView
处于其上方位置以覆盖屏幕内容偏移量是 不是 在 0(即我们是 不是 在表格顶部)并且用户向下平移手势时,该手势应该与 UITableView
交互. UIPanGestureRecognizer
处理 View 的拖动。我尝试将其添加到:
viewB
与 UITableView
用户交互最初被禁用。这允许我拖动 viewB
上下不干扰UITableView
.曾经viewB
位于上方位置我启用 UITableView
用户交互然后正确地允许我与 UITableView
交互不动viewB
.UITableView
用户交互,这意味着触摸永远不会到达 UIPanGestureRecognizer
,这意味着我永远无法检测到上述第 (1.) 点中描述的场景,因此无法重新禁用 UITableView
用户互动制作 viewB
再次移动。UITableView
使用的手势识别方法来做到这一点。 ?如果这是可能的,任何人都可以指出我正确的方向吗? UITableView
前面添加了一个新 View .我想也许我可以将触摸手势转发到 UITableView
必要时支持它,但我仍然没有找到方法来做到这一点。UITableView
进行交互。 ,但后来我遇到了与上述相同的问题。我无法检测何时重新启用它。 UITableView
内viewB
.这似乎是迄今为止最有希望的方式。通过设置以下方法的返回值,我可以启用和禁用 viewB
的识别。和 UITableView
.func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
if pulloverVC.view.frame.origin.y == bottomNavbarY &&
pulloverVC.tableView?.contentOffset.y == 0 { // need to add gesture direction check to this condition
viewBisAtTop = true
return false // disable pullover control
}
return true // enable pullover control
}
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
if (gestureRecognizer as! UIPanGestureRecognizer).velocityInView(view).y < 0 && viewBisAtTop { // gesture direction check not wanted here
return true // enable tableview control
}
viewBisAtTop = false
return false // disable tableview control
}
viewB
之间交替交互。和 UITableView
.velocityInView()
在识别器上(如底部方法所示)。我打算在顶级方法中进行此检查 if
声明,但我认为这会起作用,尽管 velocityInView()
在底部方法中工作正常,在顶部方法中不起作用(速度始终为 0)。 最佳答案
设法让这个工作。
在我上面的问题中描述的方法中,我删除了最重要的方法,只保留了这个(它有一些变化):
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
if ((gestureRecognizer as! UIPanGestureRecognizer).velocityInView(view).y < 0
|| pulloverVC.tableView.contentOffset.y > 0)
&& pulloverVC.view.frame.origin.y == bottomNavbarY {
return true // enable tableview control
}
return false
}
UITableView
处于上位
和 要么用户没有向下拖动
或 表格内容是偏移的(我们不在表格的顶部)。如果这是真的,那么我们
return true
启用表 View 。
viewB
的控制。从移动:
func handlePanGesture(recognizer: UIPanGestureRecognizer) {
let gestureIsDraggingFromTopToBottom = (recognizer.velocityInView(view).y > 0)
if pulloverVC.view.frame.origin.y != bottomNavbarY || (pulloverVC.view.frame.origin.y == bottomNavbarY && gestureIsDraggingFromTopToBottom && pulloverVC.tableView.contentOffset.y == 0) {
...
UITableView
交互关闭,除非其父 View
viewB
处于正确位置,当它处于正确位置时,将禁用
viewB
的移动以便只与
UITableView
互 Action 品。
UITableView
交互。被重新禁用并与其父 View 交互
viewB
重新启用。
关于ios - 处理多个 View 的 UIPanGestureRecognizer 手势(一个覆盖另一个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31348739/
我知道 C++ 中的 overriding 是什么。但是,是否存在覆盖?如果有,是什么意思? 谢谢。 最佳答案 在 C++ 术语中,您有 覆盖(与类层次结构中的虚拟方法相关)和 重载(与具有相同名称但
我想捕获位于另一个元素下的元素的鼠标事件。 这是我所拥有的示例:http://jsfiddle.net/KVLkp/13/ 现在我想要的是当鼠标悬停在红色方 block 上时蓝色方 block 有黄色
以下报道 here我尝试创建一个带有重叠散点图的箱线图。 但是当我运行时: In [27]: table1.t_in[table1.duration==6] Out[27]: counter 7
有一个 JS Fiddle here , 你能在不克隆到新对象的情况下替换 e.target 吗? 下面重复了那个 fiddle 的听众; one.addEventListener('click',
首先要解决重复的可能性: 我不是询问 Override 是什么、它的含义或 @Override 在 java 文档注释之外。那是我不是问 /**Some JavaDoc Comment*/ @over
我想要高于定义的数组。它存储点及其坐标。 public static List simpleGraph(List nodes) { int numEdges = nodes.size() *
我在 http://olisan.dk/blog/ 有一个博客- 如您所见,有一个 28 像素的高间隙(边距顶部)...在 style.css 中: margin-top: 0; 也被设置为 marg
Vulkan 句柄是指向 struct 的不透明指针,或者只是无符号的 64 位整数,具体取决于 VK_USE_64_BIT_PTR_DEFINES 的值: #if (VK_USE_64_BI
我正在尝试提供一个行为类似于 DataGridTextColumn 的 DataGrid 列,但在编辑模式下有一个附加按钮。我查看了 DataGridTemplateColumn,但似乎更容易将 Da
使用 Django 1.10 我想在用户名中允许\字符,因为我在使用“django.contrib.auth.middleware.RemoteUserMiddleware”的 Windows 环境中
我正在尝试使用 ffmpeg 将 Logo 放入 rtmp 流中。我的 ffmpeg 版本是 ffmpeg version 4.3.1目前在我的复杂过滤器中,我有: ffmpeg -re -i 'v
是否有用于Firebase 3存储的方法/规则来禁用文件更新或覆盖? 我为数据库找到了data.exists(),但没有为存储找到解决方案。 最佳答案 TL; DR:在Storage Security
我有两个 Docker Compose 文件,docker-compose.yml看起来像这样 version: '2' services: mongo: image: mongo:3.2
我需要覆盖 JPA 中的集合表吗?也许有人有想法 public class nationality{ @Embedded @AttributeOverrides({
嗨,我正在使用 WIX 和下面的代码将文件安装到目录中。 我的应用程序的工作方式是用户可以在该目录中复制他们自己的文件,覆盖他们喜欢的内容
我正在尝试为 Lua 中的字符串实现我自己的长度方法。 我已成功覆盖字符串的 len() 方法,但我不知道如何为 # 运算符执行此操作。 orig_len = string.len function
在Scala 2.10.4中,给出以下类: scala> class Foo { | val x = true | val f = if (x) 100 else 200
我想做上面的事情。 我过去覆盖了许多文件...... block ,模型,助手......但这个让我望而却步。 谁能看到我在这里做错了什么: (我编辑了这段代码......现在包括一些建议......
根据javadoc An instance method in a subclass with the same signature (name, plus the number and the ty
我有一段代码,只要有可用的新数据作为 InputStream 就会生成新数据。每次都覆盖同一个文件。有时文件在写入之前变为 0 kb。 Web 服务会定期读取这些文件。我需要避免文件为 0 字节的情况
我是一名优秀的程序员,十分优秀!