2011-12-13 16 views
5

Tôi có một ứng dụng sử dụng các sự kiện chạm để vẽ trên màn hình. Tôi sử dụng UITouch locationInView để trả lại số CGPoint của liên lạc. Vấn đề là các tọa độ x và y luôn giống nhau - NHƯNG chỉ trên các thiết bị thế hệ thứ hai chạy iOS 4.2.1 VÀ chỉ khi ứng dụng của tôi được xây dựng trong chế độ Phát hành. Điều này cũng chỉ có vẻ là một vấn đề khi chạm trực tiếp từ một đối tượng sự kiện touchesMoved hoặc touchesEnded vì các nút của tôi phản hồi chạm chính xác.Tác động của việc sử dụng LLVM-GCC để giải quyết các vấn đề trên thiết bị thế hệ thứ hai chạy iOS 4.2.1

Nhờ một bài đăng ở http://getmoai.com/forums/new-users/ios-touch-sensor-y-co-ordinate-always-the-same-as-x/ tôi đã có thể khắc phục vấn đề bằng cách sử dụng trình biên dịch LLVM-GCC hơn là trình biên dịch mới LLVM 3.0 và bằng cách sử dụng tối ưu hóa mức 0.

là gì thú vị là sử dụng GCC trình biên dịch đã sửa các vị trí cảm ứng tôi nhận được trong touchesEnded trong khi thay đổi mức tối ưu hóa thành -O0 đã sửa các vị trí cảm ứng mà tôi đã nhận được trong touchesMoved. Tôi không thể giải thích tại sao điều này, nhưng bây giờ tôi ngây ngất ứng dụng của tôi đang làm việc trên các thiết bị này.

Câu hỏi của tôi sau đó là - Những nhược điểm khi phân phối ứng dụng của tôi đến cửa hàng bằng trình biên dịch cũ hơn là gì? (Tôi hiểu tác động của mức tối ưu hóa.) Và có cách nào để cấu hình dự án để tôi sử dụng trình biên dịch cũ hơn và mức tối ưu hóa thấp hơn chỉ dành cho thiết bị iOS 4.2.1 và/hoặc thế hệ thứ 2 không?

+0

cùng một vấn đề ở đây, bạn đã tìm thấy gì chưa? –

Trả lời

0

Tôi tin this stack overflow post hoàn toàn giải thích được vấn đề và cung cấp một giải pháp tốt hơn (một cho phép thiết lập dự án của tôi để ở hiện tại với các khuyến nghị).

+0

Tôi tin rằng điều này đã được sửa trong các lần lặp lại gần đây của trình biên dịch LLVM. Hãy thử điều này trong Xcode 4.4 (4.5 giọt hỗ trợ cho ARMv6 hoàn toàn), và tôi tin rằng bạn sẽ có thể sử dụng trình biên dịch LLVM mà không vô hiệu hóa tập lệnh Thumb. –

1

Tôi đang sử dụng hack này:

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

// working! 
static CGPoint location; 
location = [touch locationInView:_myView]; 
// 
Các vấn đề liên quan