现在我们已经在iPad 2上显示镜像(现在有线... iOS 5中的无线),有没有一种简单的方法来显示屏幕上的所有触摸?这在演示应用程序时会很有用吗?
我正在寻找的是能够包含一些SDK,并且可能更改一行代码,之后我的所有触摸都将显示在屏幕上。
我见过很多其他演示应用的方法: 1)使用模拟器和屏幕捕获工具,将鼠标光标变成一个大的白色圆圈 2)可以记录屏幕/显示所有触摸的越狱黑客
但是,我的目标是只在实际设备上运行的常规应用上显示触摸。
答案 0 :(得分:8)
您可以使用Touchposé:https://github.com/toddreed/Touchpose
答案 1 :(得分:3)
在查看所有各种图书馆之后,我意识到,至少在我的情况下,他们是大规模的矫枉过正。我只想制作一个App预览视频,我只需要在我的应用中的两个地方使用它。
所以,我花了一点时间想出了以下代码,您可以使用基于SpriteKit的场景来逐个场景地启用触摸显示。 (并且,如果你从头开始,你可以继承SKScene并将其烘焙以供所有场景使用。)
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
#ifdef weBeRecording
// ^^ Only do this if we're building a special version for making App Previews
// Could also be switched on and off by a runtime control, I suppose
// Create a new SKSprite at the touch location
SKSpriteNode *touchesNode = [SKSpriteNode spriteNodeWithImageNamed:@"touchMarker.png"];
touchesNode.position = location;
// Initially see-through
touchesNode.alpha = 0.0;
// Position it above all your other nodes
touchesNode.zPosition = 199;
// And size it appropriately for your needs
touchesNode.size = CGSizeMake(80, 80);
// Add it to the scene
[self addChild:touchesNode];
// And then make it fade in and out. (Adjust in and out times as needed.)
SKAction *showTouch =
[SKAction sequence:@[
[SKAction fadeInWithDuration:0.25],
[SKAction fadeOutWithDuration:0.25],
[SKAction removeFromParent]
]];
[touchesNode runAction:showTouch];
#endif
/* process original touch on node here */
}
当然,您必须自己制作touchMarker.png文件。我在Photoshop中创建了它,它只是一个简单的100x100白色圆圈,透明度为50%。老实说,获得该图像需要更长的时间才能使代码正常工作。 (如果有方法可以在这里附加图片,我会这样做。但是,嗯,这是我的第一天。是的。)
有一点需要注意,在执行此操作之前,您已找到并保存最初触摸的节点(保存在" node"变量中)。如果您不这样做,那么原始值会丢失,并且在您显示触摸标记后,您的节点测试都不起作用。
希望这有助于其他人!
DIZ
答案 2 :(得分:3)
我意识到这个问题现在已经过时了,但现有的解决方案对我来说都不够好。我需要一些开箱即用的东西,有多个窗口,无需子窗口或做任何摆弄。
所以我创建了ShowTime,它(直到Swift 4)字面上只需要你将pod添加到你的podfile或者将ShowTime.swift添加到你的目标。除非您要配置默认值,否则其余部分是完全自动的。
https://github.com/KaneCheshire/ShowTime
从Swift 4开始,在AppDelegate中还有一个额外的步骤,只需设置 ShowTime.enabled = .always
或ShowTime.enabled = .debugOnly
编辑:Swift 4现在再次自动启用,因此无需手动启用。
答案 3 :(得分:0)
您必须在容器视图上进行自定义触摸编码,并将圆形视图的中心移动到触摸的locationInView。
答案 4 :(得分:0)
我可能尝试使用touchesBegan,touchesMoved和touchesEnded捕获KeyWindow上的所有触摸。然后,您可以在应用程序上方放置一个透明视图,然后在适当的位置显示触摸。