gpt4 book ai didi

ios - 如何通过非全屏 UITableView 的 UIEdgeInsets : 屏幕上的点传递点击手势

转载 作者:搜寻专家 更新时间:2023-10-31 22:38:22 26 4
gpt4 key购买 nike

我创建了一个屏幕,其中有一个全屏 UITableView,我为其设置了 UIEdgeInsets,我的配置如下:

categoriesTableView.contentInset = UIEdgeInsets.init(top: HEADER_VIEW_HEIGHT, left: 0, bottom: 0, right: 0)

其中 HEADER_VIEW_HEIGHTCGFloat = 160

这允许我向 UITableView 添加一个“标题 View ”,当我开始滚动 UITableView 时它会被覆盖(...并且不会卡在UITableView,作为真正的标题 View )。

问题:问题是我需要在标题 View 中有 3 个可点击 View ,所以我在 Storyboard中设计了 3 个 View 并配置了 Tap Gesture Recognizers他们。但是当我尝试使用它们时,即使我在屏幕上看到这些 View (由于 contentInset 配置),点击手势也不会被传递并抛出 UITableView。使它们可点击/可点击的唯一方法是,如果我在 UITableView 上将 User Interaction Enabled 设置为 false(我不能这样做,因为我需要 UITableView 也可以拖动和点击)。

问题:当 contentInset 设置未被 UITableView 覆盖时,我如何将点击事件传递到较低的“标题 View ”可点击部分?

这是 UI 图像,在其中您可以看到有一个全屏 UITableView,在它后面有一个具有 3 个 subview 的 View ,其中包含 3 个我可以呈现给用户的最喜欢的项目为了更容易访问。当屏幕启动时,UITableView 有一个 contentInset,因此用户可以看到那些易于访问的选项并按下它们(他现在不能这样做)。当用户开始滚动时,UITableView 会位于具有 3 个 View 的布局之上,并且用户能够在全屏中滚动列表。有点像视差效果。

enter image description here

最佳答案

对此我有一个非常丑陋的解决方案..

现在你有一个表格 View ,下面是一个标题 View ,对吧?在 TableView 之上再添加一个 View ,其中包含 3 个 subview ,并且都是透明的颜色。

将这个新添加的 subview 定位为与标题 View 相同的位置(通过编程方式提供与标题 View 相同的框架,或者通过将其顶部、左侧、底部和右侧约束连接到标题 View )。同样将这个新 View 的 3 个 subview 定位为与标题 View 内的 subview 相同。并为这个新 View 的 subview 提供点击手势。所以我们的用户会认为他正在点击标题 View ,而实际上他正在点击这个不可见的 View 。

如果你想在表格 View 向上滚动并覆盖标题 View 后触摸它,那么你可以使用这两个中的一个..

  1. 调用 UIScrollViewDelegate 委托(delegate)方法 scrollViewDidScroll() 并在内部如果 scrollView.contentOffset.y >= 160,将这个新添加的 View 的 User Interaction Enabled 设置为 false,如果 scrollView.contentOffset.y 则将其恢复为 true < 160.

  2. 或者从scrollViewDidScroll()内部赋值outletOfTopConstraintOfYourNewView.constant = -(scrollView.contentOffset.y),这样新view也会随着滚动向上移动,从而改变它的可见可点击区域。

另一个不太优雅的想法是..

不提供 contentInset,而是在此 TableView 中的第 0 个索引处再添加一个部分,其中只有一个高度为 160 的单元格,启用的用户交互为 false,颜色为透明。那么你就不用担心scrollViewDidScroll()中的逻辑了。

关于ios - 如何通过非全屏 UITableView 的 UIEdgeInsets : 屏幕上的点传递点击手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52623043/

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