2011-07-13 45 views
7

既然我們在iPad 2上有顯示鏡像(現在有線...無線iOS 5),有沒有簡單的方法來顯示屏幕上的所有觸摸?演示應用程序時這會很有用嗎?如何顯示屏幕上的所有觸摸以演示iPhone應用程序?

我在尋找的是能夠包含一些SDK,也許更改一行代碼,之後我的所有觸摸都將顯示在屏幕上。

我看到很多其他的方式來演示應用程序: 1)使用模擬器的屏幕捕獲工具沿會變成你的鼠標光標變成一個大的白色圓圈 2)越獄黑客可以全部記錄屏幕/顯示器觸摸

但是,我的目標是在實際設備上運行的常規應用程序上顯示觸摸。

回答

0

您必須在容器視圖中自定義觸摸代碼並將圓形視圖的中心移動到觸摸的位置視圖。

0

我可能會嘗試捕獲與touchesBegan,touchesMoved和touchesEnded的KeyWindow的所有接觸。然後,您可以在應用程序上放置透明視圖,然後在適當的位置顯示觸摸。

3

看着都這樣做的各種庫後,我意識到,至少在我的情況,他們是巨大的矯枉過正。我只是想製作一個App Preview視頻,我只需要它在我的應用中的兩個位置。

所以,我花了一點時間,想出了以下代碼,您可以在基於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中創建了它,它只是一個具有50%透明度的簡單100x100白色圓圈。老實說,獲取該圖像花費的時間比獲取代碼的工作時間要長。 (如果在這裏有附加圖片的方法,我會這樣做,但是,恩,這是我的第一天。是的)

一個告誡,你已經找到並保存了最初的感動節點(保存在這裏「節點」變量)之前,你這樣做。如果您不這樣做,則在顯示觸​​摸標記後,原始值將丟失,並且您的任何節點測試都不起作用。

希望這可以幫助別人!

DIZ

2

我意識到這個問題是老了,但沒有一個現有的解決方案不夠好我。我需要一些可以在多個窗口中工作的東西,而無需對窗口進行子類化或做任何擺弄。

因此,我創建了ShowTime,它直到需要您將pod添加到您的pod文件或將ShowTime.swift添加到您的目標。其餘的是完全自動的,除非你想配置默認值。

https://github.com/KaneCheshire/ShowTime

起價斯威夫特4還有一個額外的步驟,在你的AppDelegate,只需設置ShowTime.enabled = .alwaysShowTime.enabled = .debugOnly

相關問題