标签: uiview-hierarchy

使用hitTest:withEvent捕获其超级视图框架外的子视图的触摸:

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

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

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

例:

  • (E)是EditView所有观点的父母
  • (M)是MenuViewEditView的子视图
  • (B)是ButtonViewMenuView的子视图

图:

+------------------------------+
|E                             |
|                              |
|                              |
|                              |
|                              |
|+-----+                       |
||B    |                       |
|+-----+                       |
|+----------------------------+|
||M                           ||
||                            ||
|+----------------------------+|
+------------------------------+
Run Code Online (Sandbox Code Playgroud)

因为(B)在(M)的框架之外,(B)区域中的抽头将永远不会被发送到(M) - 实际上,(M)在这种情况下从不分析触摸,并且触摸被发送到层次结构中的下一个对象.

目标:我认为压倒一切hitTest:withEvent:可以解决这个问题,但我不明白究竟是怎么回事.在我的情况下,应该hitTest:withEvent: …

objective-c ios uiview-hierarchy

91
推荐指数
3
解决办法
3万
查看次数

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

我想列出一个中的所有子视图UIViewController.我尝试过self.view.subviews,但并未列出所有子视图,例如,UITableViewCell未找到子视图.任何的想法?

subview uiview ios uiview-hierarchy

83
推荐指数
9
解决办法
9万
查看次数

在autolayout中居中子视图的X会抛出"没有为约束做好准备"

我有一个自定义的UIView子类,它通过一个nib进行初始化.

-awakeFromNib,我正在创建一个子视图,并试图将其置于超级视图中.

[self setInteralView: [[UIView alloc] init]];
[[self internalView] addConstraint: [NSLayoutConstraint constraintWithItem: [self internalView]
                                                                 attribute: NSLayoutAttributeCenterX
                                                                 relatedBy: NSLayoutRelationEqual
                                                                    toItem: self
                                                                 attribute: NSLayoutAttributeCenterX
                                                                multiplier: 1
                                                                  constant: 0]];
Run Code Online (Sandbox Code Playgroud)

这会中断,并导致以下输出:

2013-08-11 17:58:29.628 MyApp[32414:a0b] The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0xc1dcc80 UIView:0xc132a40.centerX == MyView:0xc1315a0.centerX>
    When added to a view, the constraint's items must be descendants of that view (or the view itself). This will crash if the constraint needs to be resolved before the view hierarchy is assembled. Break …
Run Code Online (Sandbox Code Playgroud)

objective-c ios autolayout uiview-hierarchy nslayoutconstraint

81
推荐指数
5
解决办法
5万
查看次数

iOS:警告"尝试呈现其视图不在窗口层次结构中的ViewController"

当我尝试在导航控制器上呈现ActivityController时,我收到以下警告,

Attempt to present <UIActivityViewController: 0x15be1d60> on <UINavigationController: 0x14608e80> whose view is not in the window hierarchy!
Run Code Online (Sandbox Code Playgroud)

我试图通过以下代码呈现视图控制器,

UIActivityViewController * activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities];
    activityController.excludedActivityTypes = excludeActivities;

    UIViewController *vc = self.view.window.rootViewController;
    [vc presentViewController: activityController animated: YES completion:nil];

    [activityController setCompletionHandler:^(NSString *activityType, BOOL completed) {
        NSLog(@"completed");

    }];
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?

objective-c ios uiview-hierarchy uiactivityviewcontroller presentviewcontroller

39
推荐指数
2
解决办法
7万
查看次数

Swift中的recursiveDescription方法?

有没有办法在Swift中使用[self.view recursiveDescription]?我试图使用此方法,但我收到以下错误:

'UIView' does not have a member named 'recursiveDescription'
Run Code Online (Sandbox Code Playgroud)

有什么建议?

uiview ios uiview-hierarchy swift ios8

35
推荐指数
5
解决办法
1万
查看次数

带孩子的UIView上的TouchUpInside

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

我有一个UIView带几个孩子(一对夫妇UILabel的和UIImageView).当用户点击(点击)父级内部的任何位置时,我需要捕获一个事件UIView- UIView它或其任何子级的可见部分).

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

iphone uiview-hierarchy touch-up-inside

20
推荐指数
2
解决办法
1万
查看次数

如何将子视图添加到视图层次结构的底部

我想将以编程方式添加的mapView添加到层次结构视图的底部,因为我已经在故事板中预先绘制了一些元素.

所以,在我调用方法之后:

[self.view addSubview:self.map];
Run Code Online (Sandbox Code Playgroud)

如何将它放在视图层次结构的底部?

iphone ios uiview-hierarchy

14
推荐指数
3
解决办法
1万
查看次数

如何在UITableView标题上方添加具有视差效果的图像并保持标题粘滞?

这是一张图片,解释了我想做的一切:

在此输入图像描述

我的问题是,我将如何制作我的视图结构.表视图的标题应固定在表的顶部.但是在表格视图标题上方的最顶层图像呢?我是否必须在UIScrollView中添加表视图?

视差效果可以通过CATransform3D,但我如何实现我想要的,这是我的问题.有很多演示,但我想让它完成自定义.

catransform3d uiviewanimationtransition ios uiview-hierarchy swift

13
推荐指数
1
解决办法
1万
查看次数

什么是_UILayoutGuide?

我需要知道_UILayoutGuide,就像它是什么,它做什么和为什么它存在于层次结构UIViewsubview几乎总是frame = (0,0,0,0).

iphone uiview ios uiview-hierarchy

12
推荐指数
2
解决办法
5054
查看次数

为程序化视图层次结构设置自动布局约束?

我正在以编程方式创建我的视图层次结构,如下所示:

UIWindow* window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

UIViewController1* viewController1 = [[UIViewController1 alloc] init];
UIViewController2* viewController2 = [[UIViewController2 alloc] init];

UINavigationController* navigationController = [[UINavigationController alloc] init];
[navigationController setViewControllers:@[viewController1, viewController2] animated:NO];

[window setRootViewController:navigationController];
[window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)

两个VC都是从XIB加载的,在这两种情况下都使用autolayout.一切看起来都不错但是当我真的做了po [[UIWindow keyWindow] _autolayoutTrace]一件事时,我AMBIGUOUS LAYOUT在控制台中收到了一些令人担忧的警告:

*<UIWindow:0xc63bec0>
|   *<UILayoutContainerView:0xd3d79b0> - AMBIGUOUS LAYOUT
|   |   *<UINavigationTransitionView:0xd3d8b60> - AMBIGUOUS LAYOUT
|   |   |   *<UIViewControllerWrapperView:0xd566c00> - AMBIGUOUS LAYOUT
|   |   |   |   *<UIView:0xc66b290> - AMBIGUOUS LAYOUT
|   |   |   |   |   *<UIView:0xc66b0e0> - AMBIGUOUS LAYOUT …
Run Code Online (Sandbox Code Playgroud)

uikit ios autolayout uiview-hierarchy

9
推荐指数
1
解决办法
2236
查看次数