我正在以编程方式将UIView B添加到另一个UIView A。
A帧是{{0,372},{320,44}}。 B UIView在{0,-74}添加,宽度为{320,74}。
我的问题是没有处理B触摸事件。
更精确的触摸事件被处理到UIView的兄弟UITableView,即使在UITableView上显示B UIview,也会在{0,372}处结束。
有任何解决方案吗?
答案 0 :(得分:3)
为了确定触摸事件所处的视图,Cocoa遍历视图层次结构(并向每个子视图发送hitTest:withEvent:
消息。反过来,此消息本身调用pointInside:withEvent:
,返回一个布尔值value,指示视图是否包含指定的点。
据推测,您可以将UIView A子类化并覆盖其pointInside:withEvent:
方法,以便在A的边界之外但在B之内的点返回YES。
答案 1 :(得分:1)
好的,你的B-UIView完全超出了A-UIView的范围。如果在“界面”构建器中使用相同的框架设置两个通用视图,并将背景设置为不同的颜色,您将完全看不到B-UIView。 alt text http://img256.imageshack.us/img256/6789/screenshot20091030at350.png
这就像定义一个框架在屏幕边界之外的视图一样。如果没有任何部分是可见的,它将不会捕获触摸,因为它在未定义的空间中关闭,茶具有负平方根。
UITableView正在处理命中,因为B UIView根本不在响应链中。
你需要让B-UIView成为A-View的兄弟,而不是看不见的非活动子视图。然后将其覆盖在UITableView的底部。
答案 2 :(得分:0)
你不能这样做。您应该将A和B视图添加到另一个视图C.它会起作用。