2010-03-22 24 views
1

我觉得这应该是显而易见的,但由于某种原因,我无法弄清楚这一点。我有导航栏,工具栏和主视图的导航界面。有时用户采取的行动会导致进度指示器出现在视图中间。iPhone:我如何设置一个清晰的窗口大小“拦截视图”?

虽然中间旋转的进度指示器(这是一个自定义的UIView),但我不希望触摸输入被允许进入任何底层界面(主视图,导航栏,工具栏等)。但这似乎并不重要。

我试过(并失败)创建一个简单的视图,其唯一的工作是吞下触摸输入并将其用作窗口子视图 - 没有骰子,它从来没有得到触摸事件(是的,它确实有userInteractionEnabled)。我试图将它作为一个透明的模式视图控制器来使用,但这些似乎永远不会透明。

想法?我错过了什么?

谢谢!

回答

3

透明的UIWindow你可以用

[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 

停止从接受交互事件的应用程序了,然后开始再次服用事件

[[UIApplication sharedApplication] endIgnoringInteractionEvents]; 

但我会非常小心,因为它会阻止用户与您的应用程序进行交互。

建议另一条路线。您可以显示仅使用init方法创建的UIAlertView,以在其中间放置进度指示器。如果使用init方法,那么用户将不会有按钮与之交互。然后,只要你完成了,你可以关闭警报视图。如果您想让用户取消操作,您甚至可以使用警报视图上的按钮来取消它。

+0

布兰登,谢谢你的回复。我没有意识到全球忽视事件的能力 - 在这种情况下,这对我来说可能是最有利的,尽管我相信这对我所做的事情来说是一个相当大的锤子。自定义警报视图也很有趣,但肯定看起来有点奇怪 - 我觉得这应该更简单! :) 谢谢 –

1

您可以创建一个windowLevel> 1.

+0

谢谢,我想到了这个,但是说​​出Apple的文档:“尽管iPhone OS支持在彼此之上分层,但您的应用程序绝不应该创建多个窗口。”如果之前被苹果的批准程序拒绝,我希望找到一种在文档中没有如此消极的方式? –

+0

Kenny:我是一个傻瓜,因为不能在正常的应用程序窗口中使用类似于香草UIView的东西,而这个窗口是透明的,并且位于应用程序的所有其他位置之上?我尝试了我认为的这一点,但触摸似乎总是通过。 –