Вы не можете сделать это напрямую (как inputView). Но вы, безусловно, можете использовать эту простую работу:
Замените ваш UITextField
на UIButton и подключите его к какому-либо селектору (кнопка нажата :). Вы можете использовать UIButtonTypeCustom
, чтобы иметь возможность стилизовать его так, чтобы оно выглядело как текстовое поле (установите слой bordeColor, borderWidth, cornerRadius
и т. Д.)
in -(void)buttonClicked:(id)sender
- переключить тот же UIPickerView, который вы бы использовали в качестве inputView для замененного UITextField
. Вы можете сделать в обычном экземпляре переменную, просто не забудьте установить делегат и dataSource. Прикрепите его к корневому представлению (вашего UIViewController
шоу в popover) или даже UIWindow
и анимируйте его в / из (переключение) в зависимости от того, отображается оно или нет.
обновить текст кнопки (с помощью [button setTitle:<selected_value> forState:UIControlStateNormal]
) в методе UIPickerViewDelegate
: pickerView: didSelect ... atIndex: `- здесь можно дополнительно скрыть средство выбора ..
Я делал это несколько раз, он всегда работает при любых обстоятельствах , и вы имеете полный контроль над тем, как и где отображается сборщик без использования UIResponder
цепи.
Пока не нашел лучшего решения для таких особых случаев (клавиатура iPad также любит манипулировать всплывающими окнами - она толкает их вверх).