Questions tagged «uiview-hierarchy»

7
使用hitTest:withEvent捕获子视图在其父视图框架之外的触摸:
我的问题:我有一个超级视图EditView,它基本上占据了整个应用程序框架,一个子视图MenuView只占据了底部约20%的位置,然后MenuView包含了一个自己的子视图ButtonView,该子视图实际上位于MenuViews的范围之外(类似这样:)ButtonView.frame.origin.y = -100。 (注意:EditView具有不属于MenuView视图层次结构的其他子视图,但可能会影响答案。) 您可能已经知道了这个问题:何时ButtonView在的范围内MenuView(或更具体地说,当我的触摸在MenuView的范围内时),ButtonView对触摸事件做出响应。当我的触摸不在MenuView的范围内(但仍在ButtonView的范围内)时,不会收到任何触摸事件ButtonView。 例: (E)是EditView,所有视图的父级 (M)是MenuViewEditView的子视图 (B)是ButtonViewMenuView的子视图 图解: +------------------------------+ |E | | | | | | | | | |+-----+ | ||B | | |+-----+ | |+----------------------------+| ||M || || || |+----------------------------+| +------------------------------+ 因为(B)在(M)的框架之外,所以(B)区域中的轻击将永远不会发送到(M)-实际上,在这种情况下(M)绝不会分析触摸,并且将触摸发送到层次结构中的下一个对象。 目标:我认为重写hitTest:withEvent:可以解决此问题,但我不完全知道该怎么做。就我而言,应该hitTest:withEvent:在EditView(我的“主”超级视图)中覆盖?还是应将其覆盖MenuView,不接受触摸的按钮的直接视图?还是我在想这个错误? 如果这需要冗长的解释,那么很好的在线资源将对您有所帮助-苹果公司的UIView文档除外,但我对此并不清楚。 谢谢!


8
在自动布局中将子视图的X居中会引发“未为约束做准备”
我有一个自定义的UIView子类,该子类正在通过笔尖初始化。 在中-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]]; 这会中断,并导致以下输出: 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 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.