问题标签 [uiview-hierarchy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
944 浏览

objective-c - 在 Cocoa,UIResponder 中将消息从子视图发送到父视图?

我有所有这些触摸敏感的子视图,我想从子视图向超级视图发送一条消息,说用户选择了它,因此超级视图可以与控制器的其余部分进行通信。

我无法在子视图和控制器之间进行通信,子视图 >> 超级视图 >> 控制器

也许使用 UIResponder 来实现这个?

0 投票
22 回答
98647 浏览

ios - 如何列出iOS中uiviewcontroller中的所有子视图?

我想列出 a 中的所有子视图UIViewController。我试过self.view.subviews了,但不是所有的子视图都列出来了,比如UITableViewCell没有找到里面的子视图。任何的想法?

0 投票
5 回答
13767 浏览

iphone - 带有孩子的 UIView 上的 TouchUpInside

我可能在这里遗漏了一些东西,但是...

我有UIView几个孩子(几个UILabel' 和UIImageView)。当用户单击(点击)父级内的任何位置时,我需要捕捉一个事件-或其任何子级的UIView可见部分)。UIView

这样做的最佳方法是什么?

0 投票
1 回答
129 浏览

ios - 打开文档时管理视图层次结构

我有一个可以打开特定类型文档的 IOS 应用程序。

我的应用程序通过以下方式接收文档:

当它尚未开始或通过时

当应用程序已经启动时。

当我的应用程序已经启动时,用户可能已经在我的应用程序中打开了许多视图。接下来当我的App被触发打开文档时,如何打开并导航到正确的视图(关闭旧的层次结构并打开新的层次结构以显示文档)?

我曾尝试使用:

使用 fromViewController = rootViewController(使用 UIApplication 和 UIWindow 检索)和 toViewController:我需要显示文档但没有成功的 ViewController。

任何想法如何在这个主题上取得进展?谢谢,

塞巴斯蒂安。

0 投票
4 回答
8847 浏览

objective-c - 如何在 Superview 的视图中插入视图?(iOS)

我有下面的代码行......我将如何修改它以将子视图插入名为“foo”的超级视图的视图中?

0 投票
0 回答
69 浏览

objective-c - 如何在 Superview 的视图中插入视图?(iOS)

可能重复:
如何在 Superview 的视图中插入视图?(iOS)

我有下面的代码行......我将如何修改它以将子视图“mySubview”插入到在超级视图中找到的名为“myView”的 UIView 中?

0 投票
0 回答
382 浏览

ios - 多个视图控制器共有的子视图无响应

我正在使用 aUIView向用户显示繁忙/处理线索,并且加载视图中的组件没有响应用户触摸。让我详细说明我的问题。我有大约 3UIViewController秒的时间,并根据情况显示其中之一ViewVieControllers我使用以下代码更改当前视图

然后我有一个加载视图,它通常用于向用户显示忙碌/正在处理的 UI。我从 nib 文件以下列方式创建了加载视图

在应用程序委托中,我初始化加载视图并将其添加到主窗口

每当我需要显示加载/忙碌视图时,我只需像这样加载它

一切正常,但加载视图中的组件没有响应触摸。任何线索出了什么问题?

我刚刚意识到问题是由于线程问题。当用户开始下载任何文件时,我会显示此子视图。我之前的代码是直接开始下载

我现在使用后台线程从另一个方法调用此方法,如下所示

然后我在下载中添加runloop,比如

这工作正常,我的子视图是响应式的。真的花了很多时间。问题是有清晰的代码示例可以帮助在后台线程中运行下载,同时使 UI 响应。

0 投票
8 回答
35553 浏览

objective-c - 使用 hitTest:withEvent 捕获其父视图框架之外的子视图的触摸:

我的问题:我有一个EditView基本上占据整个应用程序框架的超级视图,以及一个MenuView只占用底部 ~20% 的子视图,然后MenuView包含它自己的子视图ButtonView,它实际上位于MenuView' 的边界之外(像这样:)ButtonView.frame.origin.y = -100

(注意:EditView有其他不属于MenuView的视图层次结构的子视图,但可能会影响答案。)

您可能已经知道这个问题:当ButtonView在 的范围内MenuView(或者,更具体地说,当我的触摸在MenuView的范围内时),ButtonView响应触摸事件。当我的触摸超出MenuView' 范围(但仍在ButtonView' 范围内)时, 不会收到任何触摸事件ButtonView

例子:

  • (E) is EditView,所有视图的父级
  • (M) is MenuView, EditView 的一个子视图
  • (B) 是ButtonView,MenuView 的子视图

图表:

因为 (B) 在 (M) 的框架之外,所以 (B) 区域中的点击将永远不会发送到 (M) - 事实上, (M) 在这种情况下从不分析触摸,触摸被发送到层次结构中的下一个对象。

目标:我认为覆盖hitTest:withEvent:可以解决这个问题,但我不明白如何。就我而言,应该在(我的“主”超级视图)hitTest:withEvent:中被覆盖?EditView还是应该在MenuView未接收触摸的按钮的直接超级视图中覆盖它?还是我想错了?

如果这需要一个冗长的解释,一个好的在线资源会很有帮助——除了 Apple 的 UIView 文档,我没有说清楚。

谢谢!

0 投票
1 回答
2219 浏览

objective-c - UIView clipToBounds 没有停止子视图接收父视图之外的触摸

我有两个 UIView。我正在使用一个来包含另一个,以便我可以将一个滑入另一个。我遇到了一个问题,即使子视图被剪辑到其父视图的边界,它仍然会接收触摸事件并阻止对其他底层视图的访问。

我有三个显示布局的屏幕截图。我已将父级着色为绿色,将子级着色为红色。

这个想法是用户单击“查看”并且子视图向上滑动。subView在默认位置时,UITabBar被覆盖,无法点击。您可以在底部出现红色视图的第一张图像中看到这一点。当 subView 移到顶部时,可以单击 UITabBar,因为它现在可见。在第三张图片中,我展示了在绿色 UIView 上启用 clipToBounds 的情况。

我启用了 clipToBounds,所以我不明白为什么 subView 会阻塞底层的 UITabBar。我对 clipToBounds 的理解完全错误吗?

0 投票
2 回答
8493 浏览

ios5 - UIViewContentMode 模式指的是什么类型的内容?

根据 UIView 关于该contentMode属性的官方文档:

这个定义中的内容是什么定义的?例如,它是子视图还是当我们为视图定义了背景颜色时。

我的第一个猜测是,它至少应该适用于视图中的子视图,但例如以下代码片段在使用 UIViewContentModeCenter标签时不会给我预期的结果:

我刚刚设置了一个包含 greenView 的 redView。我还将 redview 的内容模式设置为UIViewContentModeCenter- 为什么在我编写的代码中,当我更改其父级的框架时,greenView 没有居中?不应UIViewContentModeCenter该做什么?

感谢您的澄清!

Ps:loadView你可以在一个简单的视图控制器模板项目中轻松测试上面的代码。