在 Ipad 滚动视图中使用bringSubviewToFront

Posted

技术标签:

【中文标题】在 Ipad 滚动视图中使用bringSubviewToFront【英文标题】:Using bringSubviewToFront in Ipad scrollview 【发布时间】:2011-04-15 18:43:57 【问题描述】:

在我的 Ipad 应用程序中,我有一个拆分视图,其中详细视图是滚动视图... 我有 3 个滚动视图的子视图,它们是表格视图...... 执行操作时,如何使用- (void)bringSubviewToFront:(UIView *)view 将滚动视图的其中一个子视图置于最前面? (因为视图是按照它们添加的顺序“堆叠”的,最后一个在顶部)。代码应该写在subview还是detailViewController中,怎么调用?

【问题讨论】:

【参考方案1】:

您在控制器中编写代码。

控制器应该可以通过IBOutlet 属性访问表视图。或者,如果您没有使用 nib 设置它们,那么控制器应该是创建它们的那个。

例如,如果一个按钮点击负责显示特定的表格视图,则该按钮的操作处理程序方法就是您调用bringSubviewToFront: 方法的地方。

但是:听起来您有三个相互重叠的表格视图,并且正在使用 bringSubviewToFront: 来显示当前的一个,并且它们都在 UIScrollView 内。

    每个 UITableView 都包含一个 UIScrollView。不要将滚动视图放在滚动视图中,它们会为跟踪触摸而争吵,事情会变得很奇怪。只需将三个表格视图放在一个普通的 UIView 中即可。

    您应该考虑隐藏非活动视图(调用setHidden:),而不是bringSubviewToFront:。这样,隐藏的视图将不会被视为响应者链的一部分(不会收到发送的事件)。

【讨论】:

感谢您的回复.. 我如何调用 setHidden: 到其他 2 个表视图?现在我执行的操作是在中间表(中间子视图)中选择一个单元格时.. 那么我在哪里写 setHidden: 隐藏其他 2 个表(其他 2 个子视图)? 在不了解您的代码的情况下很难回答这个问题。但听起来您希望它发生在 did-select-cell 的表视图委托方法中。 这里是我最初提出的问题的链接 - ***.com/questions/5668765/…。从那里,你能告诉我哪个是我的 tableview 代表吗? 您告诉每个表格视图哪个对象是委托,它会在选择或需要创建单元格等事件时获取方法调用。 无意冒犯,但也许你需要做一个更简单的项目来学习这些东西,然后再尝试解决听起来如此复杂的事情。

以上是关于在 Ipad 滚动视图中使用bringSubviewToFront的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iPad 中处理不同的滚动视图以改变方向?

iPad:弹出视图中的表格不滚动以显示选定的行

在 iPad 上具有多个可查看页面的 UIPageControl

如何创建多向无限/圆形滚动视图,如 HBO GO iPad 应用程序

旋转 ipad 屏幕时同时调用滚动功能

在 ipad 通用应用程序中滚动查看内容大小?