Domanda

Mentre scrivevo il gestore touchesBegan a mio avviso, ho riscontrato questo errore interessante.

Codice:

...
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self];
...

Il problema è che point.x è sempre zero, indipendentemente da dove "tocco". e y è un numero enorme che fluttua da qualche parte tra 1070000000 e 1090000000.

Le maniglie sono in una classe di visualizzazione e funzionano allo stesso modo se passo zero invece di self a locationInView. Ho anche provato a fare il loop su tutti i tocchi, e c'è solo quello con x come zero sempre.

Quindi cosa sto facendo di sbagliato qui?

È stato utile?

Soluzione

Qualunque possibilità tu stia utilizzando NSLog (@ "% d,% d " ;, point.x, point.y); stampare i valori dei punti? Sembra un po 'come un float - > int errore di conversione. Ho usato locationInView: molto e non ho mai avuto problemi come questo.

Potresti anche provare a controllare [self frame] per assicurarti che sia diverso da zero.

Altri suggerimenti

Ben ha ragione. Il problema è quando si tenta di stampare il valore utilizzando % d in NSLog , poiché point.x e point.y sono valori float.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top