Pergunta

Suponha que eu tenha dois dedos tocando na tela do iPhone, mas apenas um está se movendo.

O TouchesMoved mostrará apenas um dedo (evento).

Como sei qual dos dois dedos toques de touchesmoved também está se referindo?

Foi útil?

Solução 2

Descobri que é possível fazer o que eu quero. Basta verificar o curso CS193P de Stanford no iTunesu.

Outras dicas

Infelizmente, se você pensar sobre isso, não há uma maneira "definitiva" de associar um dedo a um ponto de toque. Afinal, não é que seus dedos tenham IDs globalmente exclusivos que o iPhone tem a capacidade de amostrar.

O que você precisa fazer é manter um registro dos locais "anteriores", que é útil para gerenciar pitados e outras coisas de qualquer maneira - e marcar cada dedo com base na proximidade com os toques anteriores.

Primeiro, habilite o multitoque em seu UIView:

self.multipleTouchEnabled = true

Então mantenha um dicionário para o UITouch objetos. O mesmo UITouch Objetos são passados touchesBegan, touchesMoved, e touchesEnded:

var touchTypes = Dictionary<UITouch, Int>()

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    for touchObject in touches {
        touchTypes.updateValue(i, forKey: touch as UITouch) //determine i for your own implementation
    }
}

override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
    let type = touchTypes[touch] //depending on this value, do something
}

override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
    for touchObject in touches {
        touchTypes.removeValueForKey(touchObject as UITouch)
    }
}

Você recebe os toques como um NSSet * de TouchesBegan Método, você precisará percorrer todos os toques e colocá -los no contexto do seu aplicativo, para que você possa identificá -los posteriormente.

Teria sido muito mais fácil ajudá -lo se você descrevesse sua intenção ...

Você escreveu

O TouchesMoved mostrará apenas um dedo (evento).

Mas isso não é realmente verdade: desde que dois dedos estejam tocando na tela, e pelo menos um deles se move, você receberá um touchesMoved com Ambas dedos.

Se um dedo for recolhido temporariamente, você pode obter alguns touchesMoved ligações com apenas um dedo, então você precisa decidir o que fazer sobre isso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top