この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
UITextFieldのinputViewにUIPickerViewを設定した状態でUITextFieldをリードオンリーにするとイベントを受け付けなくなってしまいピッカーが表示されません。テキストフィールドに対してピッカー以外からの入力を受け付けないようしたい場合はUITextFieldDelegateの
optional public func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
を利用します。
[bash]
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
return false
}
[/bash]
これで、UITextFieldをリードオンリーにしなくてもタップイベントを認識し、ピッカー以外からの入力を受け付けないようになりました。
[adsense]
キーボードあるいはピッカーからの入力を受け付けるテキストフィールドがある場合は、テキストフィールドにtagを設定し、パラメータのtextFieldのtagを調べて除外しましょう。