gpt4 book ai didi

swift - 如何在没有 UITextField 的情况下显示输入屏幕?

转载 作者:行者123 更新时间:2023-11-28 08:15:25 25 4
gpt4 key购买 nike

在我的 Apple TV 项目中,我需要在没有 UITextField 的情况下任意显示输入屏幕。例如,当用户单击 UICell 时。但是,我只找到了使用 UITextField 或显示 UIAlertController 的解决方案。

然后,我在下面写了一段代码(带有解决方法)来显示输入屏幕:

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()
}
}

然后,在 View 中...

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()
}

但是,我想要一个更好的解决方案,具有可读的代码。可能吗?

最佳答案

您可以使您喜欢的任何标准 UIResponder 子类符合 UIKeyInput 协议(protocol),并在其上调用 becomeFirstResponder() 以调出键盘.

由于 UICollectionViewControllerUIResponder 的子类,您应该能够使 CreateGridViewController 符合按键输入协议(protocol)并避免整个文本字段.

关于swift - 如何在没有 UITextField 的情况下显示输入屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42685096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com