我子类UIApplication的拦截并显示在触摸我TouchDisplay视图。 我谨向为了保持我的看法TouchDisplay上的所有其他视图顶部的应用程序,窗口,代表或主视图控制器。 由于我和大多数其他应用程序的工作,视图和控制器添加和删除所有的时间。 我想正确的答案就能处理这些添加和移除和STIL保持在顶部TouchDisplay视图。
感谢您的帮助,乔
我子类UIApplication的拦截并显示在触摸我TouchDisplay视图。 我谨向为了保持我的看法TouchDisplay上的所有其他视图顶部的应用程序,窗口,代表或主视图控制器。 由于我和大多数其他应用程序的工作,视图和控制器添加和删除所有的时间。 我想正确的答案就能处理这些添加和移除和STIL保持在顶部TouchDisplay视图。
感谢您的帮助,乔
以下是你可以采取这几个方法:
如果你的目标iOS 5以上,只有iPad上 ,你可以有两个包含的视图控制器的顶级视图控制器。 第一是你的“TouchDisplay”视图中的视图控制器。 第二是在应用程序的正常根视图控制器。 (即现有的主视图控制器,你需要definesPresentationContext设置为YES这个视图控制器)因为你写的容器视图控制器,你可以订购这两个子视图,只要你喜欢。 有一个在视图控制器遏制WWDC 2011谈的是进入这个伟大的细节。 这是最“正确”的方式恕我直言,因为它给你的TouchDisplay视图视图控制器,手柄旋转,通常起着很好的与他人。 (这仅适用于iPad的,因为iPhone上的一个新模式的看法总是覆盖整个屏幕。)
更直接的方法是简单地你的TouchView到现有的顶层加一个UIWindow作为一个子视图addSubview:
大多数应用程序并不实际删除顶级视图控制器或增加新的顶级的人; 他们从它只是存在的其它视图控制器。 您在顶层窗口添加视图将保持高于。 当然,你的应用程序可能不遵循这个规则,在这种情况下,你可以尝试选项#3来代替。 这有旋转陷阱(您的视图将在设备旋转,所以你需要这个做自己。不自动旋转),你也可以强迫你的看法回到顶部,也就是说,在1秒计时器,如果您有问题与其他的东西覆盖它。 这也不是像你一样的选项#1,因为你没有得到一个UIViewController,只是一个UIView。
最极端的做法是,你可以创建一个UIWindow另一并赋予其更高的窗位,如UIWindowLevelAlert
,放在你的TouchDisplay视图。 然后,您可以使窗口背景透明,这将继续高于正常的应用内容。 有很多陷阱的位置,特别是关于自动旋转和窗口是keyWindow(这就是为什么你应该使用#1或#2,而不是如果你能)。
一段时间后,我能得到我的应用程序工作。 我做了一个简单易用的叠加,显示在你现有的应用程序的触摸反馈。
您可以在这里下载项目: https://github.com/megaplow/FingerTracks/tree/master/FingerTracks
快乐编码,乔