2011-12-13 6 views
5

У меня есть приложение, которое использует события касания для рисования на экране. Я использую UITouch locationInView, чтобы вернуть CGPoint на ощупь. Проблема в том, что координаты x и y всегда одинаковы - но только на устройствах второго поколения, работающих под управлением iOS 4.2.1, и только тогда, когда мое приложение построено в режиме деблокирования. Это также кажется проблемой только при непосредственном касании объекта события touchesMoved или touchesEnded, так как мои кнопки правильно реагируют на касания.Влияние использования LLVM-GCC для решения проблем на устройстве второго поколения с iOS 4.2.1

Благодаря пост в http://getmoai.com/forums/new-users/ios-touch-sensor-y-co-ordinate-always-the-same-as-x/ я был в состоянии решить эту проблему с помощью компилятора LLVM-GCC, а не более новый LLVM 3.0 компилятор и с помощью уровня оптимизации 0.

Что интересно, с помощью GCC компилятор скорректировал местоположения касания, полученные мной в touchesEnded, при изменении уровня оптимизации до -O0 исправил положения касания, полученные мной в touchesMoved. Я не могу объяснить, почему это так, но пока я в восторге, мое приложение работает над этими устройствами.

Мои вопросы тогда - Каковы недостатки доставки моего приложения в магазин с использованием старого компилятора? (Я понимаю влияние уровня оптимизации.) И есть ли способ настроить проект, чтобы использовать старый компилятор и более низкий уровень оптимизации только для устройств iOS 4.2.1 и/или второго поколения?

+0

та же проблема здесь, вы что-нибудь нашли? –

ответ

0

this stack overflow post Я считаю, что прекрасно объясняет проблему и обеспечивает лучшее решение (тот, который позволяет мои настройки проекта, чтобы оставаться в курсе рекомендаций).

+0

Я считаю, что это было исправлено в более поздних итерациях компилятора LLVM. Попробуйте это в Xcode 4.4 (полностью поддерживает 4.5 капли для ARMv6), и я считаю, что вы сможете использовать компилятор LLVM без отключения набора команд Thumb. –

1

Я использую этот хак:

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

// working! 
static CGPoint location; 
location = [touch locationInView:_myView]; 
// 

 Смежные вопросы

  • Нет связанных вопросов^_^