2011-12-13 15 views
5

Mam aplikację, która używa zdarzeń dotykowych do rysowania na ekranie. Używam UITouch locationInView, aby zwrócić CGPoint dotyku. Problem polega na tym, że współrzędne X i Y są zawsze takie same - ALE tylko na urządzeniach drugiej generacji z systemem iOS 4.2.1 i tylko wtedy, gdy moja aplikacja jest zbudowana w trybie Release. To także wydaje się być problemem tylko przy dotykaniu bezpośrednio z obiektu zdarzenia touchesMoved lub touchesEnded, ponieważ moje przyciski odpowiadają poprawnie na dotknięcia.Wpływ używania LLVM-GCC w celu rozwiązania problemów na urządzeniu drugiej generacji z systemem iOS 4.2.1

Dzięki Post at http://getmoai.com/forums/new-users/ios-touch-sensor-y-co-ordinate-always-the-same-as-x/ udało mi się rozwiązać ten problem za pomocą kompilatora LLVM-z GCC zamiast nowszego kompilatora LLVM 3.0 i stosując poziom optymalizacji 0.

Co ciekawe jest to, że za pomocą GCC kompilator poprawił lokalizacje dotyku, które otrzymałem w touchesEnded, zmieniając poziom optymalizacji na -O0 skorygował lokalizacje dotyku, które otrzymałem w touchesMoved. Nie potrafię wyjaśnić, dlaczego tak jest, ale na razie jestem zachwycony, że moja aplikacja działa na tych urządzeniach.

Moje pytania to - Jakie są wady dostarczania mojej aplikacji do sklepu przy użyciu starszego kompilatora? (Rozumiem wpływ poziomu optymalizacji). Czy istnieje sposób skonfigurowania projektu, aby używać starszego kompilatora i niższego poziomu optymalizacji tylko dla urządzeń z systemem iOS 4.2.1 i/lub 2nd gen?

+0

ten sam problem, czy znalazłeś coś jeszcze? –

Odpowiedz

0

wierzę this stack overflow post doskonale wyjaśnia ten problem i zapewnia lepsze rozwiązanie (jeden, który pozwala moje ustawienia projektu na bieżąco z zaleceniami).

+0

Sądzę, że zostało to naprawione w nowszych wersjach kompilatora LLVM. Spróbuj tego w Xcode 4.4 (4.5 drop wsparcie dla ARMv6 całkowicie), i wierzę, że będziesz mógł używać kompilatora LLVM bez wyłączania zestawu instrukcji Thumb. –

1

Używam tego Hack:

// not working (location.x == location.y) 
CGPoint location = [touch locationInView:_myView]; 
// 

// working! 
static CGPoint location; 
location = [touch locationInView:_myView]; 
// 
Powiązane problemy