为什么我的窗口子视图显示,但没有处理任何触摸?

时间:2011-01-17 17:55:46

标签: iphone ios subview

我在Interface Builder中将UIWindow结构化为:

  • 窗口
    • drawingView(自定义UIView)
    • 工具栏(UIToolbar)

drawingView使用touchesBegan等处理触摸。但是,当我尝试添加'someView'(自定义UIView),其上有UIButtons作为窗口的子视图时,按钮不会接收到任何触摸。 / p>

我用:

创建'someView'
[[[UIApplication sharedApplication] keyWindow] addSubview:someView]; 

'someView'在drawingView顶部显示正常,但触摸似乎根本没有注册,并被传递到drawingView。那是为什么?

另一个奇怪的事情是someView的backgroundColor似乎总是很清楚,即使我将它设置为其他程序或IB中的其他内容。

另外,当我使用

创建someView时
[[UIPopoverController alloc] initWithContentViewController:someView];

它工作正常,处理触摸和所有。我想将它添加为子视图的原因是因为我想要一种更通用的方法来添加someView,这也适用于iphone。

2 个答案:

答案 0 :(得分:0)

确保在需要接收触摸的所有视图父级上设置userInteractionEnabled标记。

答案 1 :(得分:0)

我已经找到了解决办法(以一种黑客的方式)。

我不得不添加'someView'作为drawingView的子视图,它显示在drawView的顶部,并允许我用UIButtons以编程方式设置someView,接收触摸。

我认为这是因为drawView是一个OpenGL视图,它覆盖了layerClass,它可以根据视图的排列方式进行操作。我想。