touchesBegan срабатывает только в пределах прямоугольника размером 768 x 768 пикселей.

Я наблюдаю странное поведение с моим приложением для iPad как на симуляторе (5.1 и 6.0), так и на моем устройстве (iPad2 под управлением iOS6.0). В какой бы ориентации ни запускалось приложение, touchesBegan запускается только для новых касаний в области (0,0) - (767,767) - в портретном режиме нижняя часть экрана не реагирует, в альбомной - правая сторона. Однако touchesMoved и touchesEnded работают на всем дисплее — если я коснусь и перетащу «сломанную» область, будет получено событие касания.

Далее я отметил, что в то время как на симуляторе iOS 6 мое приложение выглядит правильно, даже если оно работает неправильно, на симуляторе iOS 5.1 рендеринг также был немного испорчен. изначально тоже: Первоначально запуск в альбомной ориентацииПервоначально в книжной ориентации

Весь дисплей должен быть серым, а поле с ползунками в правом нижнем углу. Опять же, 768 здесь кажется магическим значением. Поворот пару раз устраняет эту проблему рендеринга, но не проблему ввода ... запустите в портретном режиме и поверните на 180 градусов, и теперь он выглядит правильно, но верхняя часть перестает реагировать, а нижняя.

Здесь используется третья часть библиотеки, поэтому мой главный вопрос: что может вызвать такую ​​​​проблему, что мне следует искать? Мне также любопытно, почему два симулятора дают разные результаты


person Mr. Boy    schedule 10.12.2012    source источник


Ответы (1)


Если вы touchesBegan, touchesMoved и touchesEnded все ищете местоположение в пределах вашего self.view, возможно, вы находитесь в неправильной области кадра для получения касаний. У меня была похожая проблема, и я явно изменил размер кадра, используя:

self.view.frame = CGRectMake(0,0,1024,1536);

так как моя игра высотой в два экрана. После перенастройки размера кадра touchesBegan заработало нормально. Надеюсь, это поможет!

person Benny    schedule 10.12.2012