Выбор как входной вид внутри поповера - PullRequest
7 голосов
/ 17 января 2012

Я использую всплывающее окно, чтобы показать форму представления таблицы, которая имеет размер iPhone (соответствует моему приложению iPhone).Внутри таблицы у меня есть текстовое поле, в котором в качестве представления ввода выбрано средство выбора.Когда он используется таким образом, как iPad, сборщик скользит как клавиатура iPad.Есть ли в любом случае настроить сборщик на скольжение внутри поповера, как на iPhone?

1 Ответ

1 голос
/ 15 сентября 2012

Вы не можете сделать это напрямую (как inputView). Но вы, безусловно, можете использовать эту простую работу:

  1. Замените ваш UITextField на UIButton и подключите его к какому-либо селектору (кнопка нажата :). Вы можете использовать UIButtonTypeCustom, чтобы иметь возможность стилизовать его так, чтобы оно выглядело как текстовое поле (установите слой bordeColor, borderWidth, cornerRadius и т. Д.)

  2. in -(void)buttonClicked:(id)sender - переключить тот же UIPickerView, который вы бы использовали в качестве inputView для замененного UITextField. Вы можете сделать в обычном экземпляре переменную, просто не забудьте установить делегат и dataSource. Прикрепите его к корневому представлению (вашего UIViewController шоу в popover) или даже UIWindow и анимируйте его в / из (переключение) в зависимости от того, отображается оно или нет.

  3. обновить текст кнопки (с помощью [button setTitle:<selected_value> forState:UIControlStateNormal]) в методе UIPickerViewDelegate: pickerView: didSelect ... atIndex: `- здесь можно дополнительно скрыть средство выбора ..

Я делал это несколько раз, он всегда работает при любых обстоятельствах , и вы имеете полный контроль над тем, как и где отображается сборщик без использования UIResponder цепи.

Пока не нашел лучшего решения для таких особых случаев (клавиатура iPad также любит манипулировать всплывающими окнами - она ​​толкает их вверх).

...