1
私のApple TVプロジェクトでは、入力画面をUITextField
なしで任意に表示する必要があります。たとえば、ユーザーがUICell
をクリックしたとします。しかし、私はUITextField
またはUIAlertController
を使って解決策を見つけました。私は、よりよい解決策をしたい、...ビューで、その後UITextFieldなしで入力画面を表示するには?
class CreateGridViewController: UICollectionViewController {
let showInput = ShowInput()
// ...
override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath) as! CellConfigInput
cell.addSubview(showInput)
showInput.callback = { text in
cell.labelField.text = text
}
showInput.becomeFirstResponder()
}
を
class ShowInput: UITextField, UITextFieldDelegate {
var callback: ((String) -> Void)?
init() {
super.init(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
self.delegate = self
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func textFieldDidEndEditing(_ textField: UITextField) {
callback?(textField.text!)
textField.text = ""
textField.removeFromSuperview()
}
}
しかし:
その後、私は、入力画面を表示する(回避策で)コード怒鳴るを書きました読み取り可能なコードそれが可能だ?
申し訳ありませんが、私は試しましたが、私はそれを動作させることはできません。 'CellConfigInput'に' UIKeyInput'プロトコルをサブスクライブし、 'canBecomeFocused'を常にtrueに戻すようにオーバーライドしましたが、' becomeFirstResponder() 'を呼び出すと何も起こりません。私は 'CreateGridViewController'でも試してみましたが、うまくいきません。 – Macabeus
この作業を行うには、 'canBecomeFocused'の代わりに' canBecomeFirstResponder'をオーバーライドする必要があります。 –
私もそれを作ったが、キーボードは表示しなかった:https://gist.github.com/brunomacabeusbr/6a196a6293bb429119d49ca2a3757080 'cell.becomeFirstResponder()'と 'override var canBecomeFocused:Bool {return true}'はと呼ばれますが、それでもキーボードは呼び出されません。 – Macabeus