Como rastrear toques em seu aplicativo ios
Seria bom para ser capaz de arrastar um carro e colocá-lo em qualquer lugar na tela em seu aplicativo iOS. Aqui, você vai descobrir como codificar para arrastar um objeto, e também como toques trabalhar em um dispositivo iOS.
Conteúdo
O toque de um dedo (ou levantando-a na tela) acrescenta um evento de toque a fila de eventos do aplicativo, onde é encapsulado (Contido) numa UIEvent objeto. UMA UITouch objeto existe para cada dedo toca a tela, que permite rastrear toques individuais.
o touchesBegan: withEvent: mensagem é enviada quando um ou mais dedos tocar baixo em uma exibição. Esta mensagem é um método do TestDriveControllersuperclasse ‘s, UIResponder, a partir do qual o controlador de vista é derivado.
Como o usuário continua a tocar a tela com seus dedos, o sistema relata as mudanças para cada dedo na correspondente UITouch objecto, enviando assim o touchesMoved: withEvent: mensagem. o touchesEnded: withEvent: mensagem é enviada quando um ou mais dedos levantar a partir da visão associada. o touchesCancelled: withEvent: mensagem, por outro lado, é enviado quando um evento do sistema (como um aviso de pouca memória) cancela um evento de toque.
Neste aplicativo, você precisa se preocupar apenas com os dois primeiros métodos que acabamos de descrever.
Video: Toque de Música no iPhone usando App - Andreza
Para iniciar o processo de responder a um evento de toque, adicionar uma nova variável de instância (em negrito) ao TestDriveController.m arquivo de implementação.
@interface TestDriveController () {AVAudioPlayer * backgroundAudioPlayer-SystemSoundID burnRubberSoundID- BOOL touchInCar-} -d
Em seguida, adicione o touchesBegan: método para TestDriveController.m para começar a controlar toques. (Você está realmente substituindo este método porque UIViewController herdou-a do UIResponder classe de base).
- (Void) touchesBegan: (NSSet *) toca withEvent: (UIEvent *) evento {UITouch * toque = [toca anyObject] -se (CGRectContainsPoint (self.car.frame, [toque locationInView: self.view])) touchInCar = YES -else {touchInCar = NO- [Super touchesBegan: toca withEvent: evento] -}}
Como mencionado anteriormente, o touchesBegan: withEvent: mensagem é enviada quando um ou mais dedos tocar baixo em uma exibição. Os toques em si são passados para o método em um NSSet objeto - uma colecção não ordenada de elementos distintos.
Video: Melhor Rastreador Gratuito Android e iOS - Mais Celular
Para acessar um objeto em NSSet, use o anyObject Método - ele retorna um dos objetos no conjunto. Para os nossos propósitos aqui, você está assumindo que apenas um objeto - mas você pode querer explorar esta questão em seu próprio país para que você possa entender como lidar com possibilidades adicionais.
O código a seguir mostra como configurar o anyObject método:
UITouch * toque = [toques anyObject] -
Em seguida, ter o código de determinar se evento de toque do usuário está no Carro (UIImage) Visão:
if (CGRectContainsPoint (self.car.frame, [toque locationInView: self.view]))
CGRectContainsPoint é uma função que retorna SIM quando um rectângulo (vista coordenadas) contém um ponto. Você especifica o carro de quadro, armação como o retângulo:
self.car.frame
e você especificar o ponto através do envio do locationInView: mensagem ao toque:
locationInView: self.view
locationInView: retorna a localização actual do receptor no sistema de coordenadas da visão dada. Neste caso, você está usando a exibição principal, mas você pode querer alterar a vista se você está tentando determinar a localização dentro de outro ponto de vista, por exemplo. Talvez o usuário está tocando um pedal de gás itty-bitty.
Se for determinado que o toque está no carro, você atribuir SIM ao touchInCar instância Variável, se não é, você atribuir NÃO e transmitir a mensagem a montante da cadeia de resposta. Você usa touchInCar mais tarde para determinar se o usuário está arrastando o carro ao redor ou apenas passando o dedo sobre a tela.
A implementação padrão touchesBegan: faz nada. No entanto, as subclasses derivada directamente a partir de UIResponder, particularmente UIView, transmitir a mensagem a montante da cadeia de resposta. Para encaminhar a mensagem para a próxima resposta, enviar a mensagem para super (A implementação da superclasse).
Video: Como rastrear seu namorado(a). ( Saiba onde seu parceiro está e o que ele está fazendo)
Se você substituir touchesBegan: withEvent: sem chamar super (Um padrão de uso comum), você também deve substituir os outros métodos para lidar com eventos de toque, se apenas como esboço (vazio) implementações.
Vários toques são desativados por padrão. Para permitir que o aplicativo para receber vários eventos de toque, você deve definir o multipleTouchEnabled propriedade da ocorrência de vista correspondente à SIM.
Como os usuários se movem alegremente o carro ao redor da tela (talvez dizendo aproximação aproximação para si mesmos), a sua aplicação está sendo constantemente enviadas a touchesMoved: mensagem. Adicione o código na Listagem 10-13 para TestDriveController.m para substituir esse método, o que permitirá que você mova o carro para onde o dedo do usuário é.
- (Void) touchesMoved: (NSSet *) toca withEvent: evento (UIEvent *) {if (touchInCar) {UITouch * toque = [toques anyObject] -self.car.center = [toque locationInView: self.view] -} else [ Super touchesMoved: toca withEvent: evento] -}
Se o primeiro contato foi na Carro Visão (touchInCar é SIM), Você atribuir o carro de centro propriedade para o toque de coordenadas. Quando você atribui um novo valor para o centro propriedade, a localização do ponto de vista é imediatamente alterado. Caso contrário, você ignorar o toque e encaminhar a mensagem para a cadeia de resposta.
Video: Como rastrear celulares Android e iOS
É interessante observar que quando você posicionar o carro ao lado de um botão, ele vai viajar nessa tecla quando você tocar no botão Test Drive. Esta característica ilustra a estrutura subexibição.
Experimentar com mover o carro e, em seguida, usando o botão Test Drive. Se há algo de errado com suas fórmulas para posicionar o carro durante o test drive, você verá que quando o carro começa a partir de um lugar diferente.