Aplicar zoom e rolar o SKNode no SpriteKit

Estou trabalhando em um jogo como o Scrabble no SpriteKit e fiquei preso no Zoom e na rolagem do tabuleiro do Scrabble. Primeiro, deixe-me explicar o trabalho por trás do jogo: No meu GameScene eu tenho:

Uma subclasse SKNode chamada GameBoard Layer (chamada NAME_GAME_BOARD_LAYER) contendo os seguintes filhos:

A SKNode subclass for Scrabble Board named NAME_BOARD.
A SKNode subclass for Letters Tile Rack named NAME_RACK.

As Cartas de Cartas são colhidas no Rack e jogadas no Scrabble Board.

O problema aqui é que preciso imitar o zoom e a rolagem que podem ser alcançados pelo UIScrollView, que acho que não podem ser adicionados a um SKNode. Os recursos que eu preciso imitar são:

Aumente o zoom no local preciso em que o usuário tocou duas vezesRolar ao redor (Tentei PanGestures, de alguma forma, cria um problema com blocos arrastando e soltando)Mantenha o SKNode com zoom na área específica (como o UIScrollView mantém o conteúdo com zoom nos limites do scrollView)

Aqui está o código que usei para aplicar zoom, usando UITapGestures:

No meu GameScene.m

- (void)didMoveToView:(SKView *)view {
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                                             action:@selector(handleTapGesture:)];
tapGesture.numberOfTapsRequired = 2;
tapGesture.numberOfTouchesRequired = 1;
[self.scene.view addGestureRecognizer:tapGesture];
}

- (void)handleTapGesture:(UITapGestureRecognizer*)recognizer {
if ([self childNodeWithName:NAME_GAME_BOARD_LAYER]) {
    GameBoardLayer *gameBoardLayer = (GameBoardLayer*)[self childNodeWithName:NAME_GAME_BOARD_LAYER];

    SKNode *node = [Utils nodeAt:[recognizer locationInView:self.view]
                        withName:NAME_BOARD
                   inCurrentNode:gameBoardLayer];

    if ([node.name isEqualToString:NAME_BOARD]) {
        [gameBoardLayer handleDoubleTap:recognizer];
    }

}
}

No meu nó GameBoardLayer:

- (void)handleDoubleTap:(UITapGestureRecognizer*)recognizer {
Board *board = (Board*)[self childNodeWithName:NAME_BOARD];
if (isBoardZoomed)
{
    [board runAction:[SKAction scaleTo:1.0f duration:0.25f]];
    isBoardZoomed = NO;
}
else
{
    isBoardZoomed = YES;
    [board runAction:[SKAction scaleTo:1.5f duration:0.25f]];
}
}

Alguém gentilmente me orientaria como posso obter essa funcionalidade?

Obrigado a todos.

questionAnswers(1)

yourAnswerToTheQuestion