Touchpose 1.2.0

Touchpose 1.2.0

测试已测试
语言语言 Obj-CObjective C
许可证 自定义
发布上次发布2014年12月

Todd Reed维护。



Touchpose 1.2.0

  • 作者:
  • Todd Reed

Touchposé

Touchposé with four fingers on the screen.

Touchposé是一款适用于iOS的类库,当设备连接到镜像显示器时可以渲染屏幕触摸。Touchposé会在您的应用UI上添加一个透明的叠加层;所有触摸事件都会在该叠加层上渲染半透明的圆形——这对于使用投影仪演示应用非常有用(需要iPad 2或iPhone 4S)。

要将Touchposé用于您的应用中,请将示例项目中的QTouchposeApplication.mQTouchposeApplication.h复制到您的项目中。

Touchposé应该适用于大多数应用(但请阅读以下注意点)。它通过一个公开的类QTouchposeApplication和几个私有类实现。QTouchposeApplication重写了‑sendEvent:方法,并负责在叠加视图中渲染触摸。为确保叠加视图在视图层次结构中始终保持在最顶层,采取了一些复杂的实现技巧。这是通过拦截对-didAddSubview:-becomeKeyWindow的调用来实现,使用的是方法替换。方法替换是由Objective-C运行时支持的,但它通常被认为是一种危险的做法,尤其是在对您不拥有的类进行操作时。此外,它只适用于您是唯一进行替换的情况——如果其他类也在同一类上替换方法,可能会导致问题。我的建议是,当您希望在一个投影仪上向观众演示应用时,仅将此代码用于私有的构建中。

要使用Touchposé与某个应用,指示使用QTouchposeApplication代替UIApplication。这是通过在UIApplicationMain中指定应用程序类来实现的。

    int main(int argc, char *argv[])
    {
        @autoreleasepool
        {
            return UIApplicationMain(argc, argv,
                                     NSStringFromClass([QTouchposeApplication class]),
                                     NSStringFromClass([QAppDelegate class]));
        }
    }

这样就完成了;不需要其他步骤。默认情况下,只有在实际连接到外部设备时才会显示触摸事件。如果您希望总是显示触摸事件,将QTouchposeApplicationalwaysShowTouches属性设置为YES

已知问题

  • 当显示警报视图时,在警报视图外部发起的触摸事件不会被显示。警报视图内部的触摸事件会正确显示(即使移动到警报视图外部也会显示)。

  • 在iOS 5之前的版本中,Touchposé会干扰屏幕键盘的性能。作为解决方案,当运行iOS 5之前的版本并在显示键盘时,Touchposé会自动禁用。请注意,即使在iOS 5上,触摸也不会显示在键盘上。这不是很重要,因为键盘已经有视觉效果来指示触摸发生的位置。

  • 在触摸结束时不总能清除手指触摸视图。这似乎是由iOS中的一个错误引起的:我们不会收到所有UITouch实例结束的通知。关于此问题的讨论请参阅这里。我没有对此问题进行深入的调查——它似乎只发生在iOS 5之前的版本。

许可

Touchposé遵守Apache许可证,版本2.0