gpt4 book ai didi

iphone - 嵌套 UITableView : a way to scroll both the outer vertical UITableView and a child horizontal UITableView at the same time?

转载 作者:行者123 更新时间:2023-12-03 19:19:27 25 4
gpt4 key购买 nike

当您使用非典型嵌套 UITableViews 设置时 - 您有一个外部垂直 UITableView 托管 90° 旋转 UITableViews(请参阅: Looking for a UI library to present Data horizontaly in iOS ):有没有办法让 iOS 处理垂直水平触摸同时

我发现iOS对于触摸的处理非常巧妙:水平触摸使相关的水平 UITableView 滚动,而垂直滑动使外部 UITableView 滚动。完美。

只是,我希望能够对角移动手指并同时看到外部 UITableView 和内部 UITableView 滚动。

我尝试了几种方法(使用 canCancelContentTouches、delaysContentTouches 和触摸消息),但我还没有找到实现此目的的方法。

编辑:下面是一个显示此行为的 XCode4 项目:http://marcanton.io/other/stackoverflow/nestedtableviews.zip

编辑:我将此问题提交给Apple开发者技术支持,他们的回复如下:

Thank you for writing to Apple Worldwide Developer Technical Support. I am responding to your inquiry concerning touch events in embedded UITableViews.

Typically this is an approach that is not recommended. The issue is that UITableView inherits from UIScrollView and as stated in the documentation for UIScrollView:

"Important: You should not embed UIWebView or UITableView objects in UIScrollView objects. If you do so, unexpected behavior can result because touch events for the two objects can be mixed up and wrongly handled."

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIScrollView_Class/Reference/UIScrollView.html%23//apple_ref/occ/cl/UIScrollView

So that this time, there is not a workaround for getting both to scroll at the same time.

I recommend that you file an enhancement request at http://developer.apple.com/bugreporter/ detailing what you would like to see us add in a future release.

尽管如此,我认为必须有一种方法来启用此功能,尽管我知道不建议这样做。事实上,Apple 甚至不建议将 UITableView 托管在另一个 UITableView 中,但除了上面的异常(exception),它的工作原理非常漂亮。我将根据我们的集体发现不断更新这个问题。

编辑:实际上有一种方法,详细信息如下:http://marcanton.io/blog/nested-orthogonal-tableviews/

最佳答案

这必须是拦截的触摸事件的自定义镜像。触摸事件遵循 responder chain model ,这意味着如果响应者链(最顶层(最外层) View )中的某个对象无法处理该事件或操作,它会将消息重新发送给下一个响应者(在本例中为背景 UITableView链式,链条)。这就是为什么您会看到水平事件转到水平 UITableView 而垂直事件转到垂直 UITableView。对角线触摸事件具有适用的水平和垂直事件,因此最顶层 View (外部垂直 UITableView)可以响应垂直触摸并吞掉该事件。

如果您考虑一下,所有垂直触摸都可能有一点水平事件(想想当您轻弹手指时),因此可能在后台完成一些工作来确定如何解释触摸事件(或者垂直或水平)。

我找到了这个tread将事件向下传递到响应者链中的下一个对象。您可能想尝试一下,作为您难题的部分解决方案。剩下的就是弄清楚如何捕获水平触摸事件并将其传递给下一个响应者。

关于iphone - 嵌套 UITableView : a way to scroll both the outer vertical UITableView and a child horizontal UITableView at the same time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5634695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com