Моя кнопка не обнаруживает события касания на iPhone (Retina 4-дюймовый) симулятор, но работает в iPhone (Retina 3.5-дюймовый) симулятор


Я готовлю свое приложение для iPhone 5 с помощью симулятора, и я обнаружил странную проблему, когда несколько моих кнопок, в одном из моих представлений, не работают в симуляторе iPhone (Retina 4-inch), но прекрасно работают в симуляторе iPhone (Retina 3.5-inch). Кнопки просто ничего не делают, когда их нажимают. Кто-нибудь еще сталкивался с этой проблемой?

Мне трудно понять, с чего начать с этого. Есть предложения, с чего начать?

Большое спасибо заранее за всю вашу мудрость!

5 20

5 ответов:

Вам нужно отредактировать ваше главное окно.xib и включить "полный экран при запуске". Более подробное объяснение см. В документации Apple:

Важно: при создании окна в Interface Builder, это рекомендуется включить опцию "полный экран при запуске" в разделе инспектор атрибутов. Если эта опция не включена и ваше окно меньше, чем экран целевого устройства, сенсорные события не будут получил некоторые из ваших взглядов. Это потому, что окна (как все представления) не получают события касания вне их границ прямоугольника. Поскольку представления по умолчанию не привязаны к границам окна, то представления все еще кажутся видимыми, но события не достигают их. Включение Полноэкранный режим при запуске обеспечивает размер окна подходит для текущего экрана.

Полный документ от Apple

Для меня решением было установить размер ("смоделированные метрики") в "Retina 4 Full Screen" для главного окна.xib. Мне не нужно было изменять размер других экранов (они по-прежнему не установлены). После смены главного окна.xib нижняя область снова становится кликабельной...

Проблема была вызвана другим управлением, перекрывающим мои кнопки из-за того, как были настроены пружины и стойки. Регулировка z-порядка кнопок исправила проблему. Спасибо всем!

Существует два решения этой проблемы:

Если вы используете MainWindow, выполните следующие действия:

A. Выберите MainWindow.xib.

B. выберите опцию Full Screen at Launch из Windows, доступную в Инспекторе атрибутов.

Если ваше приложение не содержит MainWindow, то просто добавьте:

self.view.frame = [UIScreen mainScreen].bounds

In ViewDidLoad.

Я решил свою задачу.

Вид .origin для 3,5-дюймового и 4-дюймового экрана различны, поэтому при написании общего кода для обоих нам нужно позаботиться о том, чтобы дать CGRectmake(x,y,w,h);

Установить темп. цвет фона diff вида diff, так что вы можете проверить, если какой-либо вид перекрывается или нет, чтобы получить событие в 4,0 дюйма.