ios ipad uibutton не отвечает после показа клавиатуры

Моя проблема в том, что кнопка отображается, но не отвечает. Даже текстовые поля. На изображении ниже текстовые поля 1 и 2, а также кнопки 1 и 2 не получают событие касания. Но другие текстовые поля выше получили штрихи. Проблема возникает, когда нажатие на текстовое поле показывает клавиатуру. Но до появления клавиатуры все текстовые поля были активны, а кнопки реагировали.

Иерархия пользовательского интерфейса,

UIScrollView (cyan)
|---UIView (blue)
    |---  All other views (text field, buttons) 

Сначала голубой и синий виды имеют одинаковый размер. Все текстовые поля и кнопки отображаются в UIView. Поэтому, когда появляется клавиатура, я изменяю размер представлений. Хотя более ранние UIView и UIScrollview имеют одинаковую область, после отображения клавиатуры синий UIView становится меньше, но его подпредставления (кнопка, текстовые поля) находятся за пределами его области. Они отображаются, но не получают событий касания.

Размер синего вида (UIView) для меня не так важен. Мне нужно хотя бы, чтобы кнопки и текстовое поле получали сенсорные события. Если я отключу автоматическое изменение размера для UIView (синий вид), это решит проблему.

Меня смущает то, что компоненты отображаются, но почему они не реагируют на события?

введите здесь описание изображения


person karim    schedule 12.11.2013    source источник


Ответы (2)


Ваша проблема - синий вид. Если подпредставление больше, чем его суперпредставление, другие части (которые не входят в суперпредставление) подпредставления не реагируют на события касания. Вы должны улучшить изменение размера, когда появляется клавиатура.

person Dave    schedule 12.11.2013
comment
Итак, вы говорите, что даже если кнопки отображаются на экране, но поскольку они находятся за пределами представления контейнера, он не будет получать события касания? - person karim; 12.11.2013
comment
Да, точно. Вам нужно улучшить логику изменения размера, чтобы увеличить размер представления контейнера. - person Dave; 12.11.2013

Кадр супервизора является фактором, зависящим от достижения события касания. Вы должны правильно настроить кадр супервизора, в вашем случае синий вид. Внутри кадра супервизора сенсорные события могут быть правильными.

настройте свойство subview клипа на да синего вида, и тогда вы сможете увидеть, что все происходит внутри рамки просмотра

person Lithu T.V    schedule 12.11.2013