如何使用 Swift 在 CustomCell 中实现 inputAccessoryView 到 UITextField?

Posted

技术标签:

【中文标题】如何使用 Swift 在 CustomCell 中实现 inputAccessoryView 到 UITextField?【英文标题】:How to implement inputAccessoryView to UITextField in CustomCell using Swift? 【发布时间】:2017-11-08 15:59:30 【问题描述】:

我有一个带有自定义单元格的 tableView,它与配置的自己的 UITableViewCell 完美配合。

在自定义单元格中有一个 UITextField 使用键盘类型的小数点。所以我想将 Done 按钮作为 inputAccessoryView 添加到键盘。

使用 doneClicked 函数和 textViewDidEndEditing 函数将委托分配给 UITextField 时出现错误。

如果我在 ViewController 中实现以下代码,我不会收到任何错误,只是我不能在重复内容(TableView)中使用 UITextField 插座。

任何想法如何得到这个工作?感谢您的帮助!

class favCell: UITableViewCell, UITextFieldDelegate  

    @IBOutlet weak var deciPadField: UITextField!

    override func awakeFromNib() 
        super.awakeFromNib()

        self.deciPadField.delegate = self

        // Decipad config for adding Done button above
        let toolBar = UIToolbar()
        toolBar.sizeToFit()
        let flexiableSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil)
        let doneButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self, action: #selector(self.doneClicked))
        toolBar.setItems([flexiableSpace, doneButton], animated: false)
        deciPadField.inputAccessoryView = toolBar  
    


    @objc func doneClicked()
        self.view.endEditing(true)
    

    func textViewDidEndEditing(_ textView: UITextView) 
        self.view.endEditing(true)
    

固定

【问题讨论】:

请注意,Swift 约定以大写字母开头的类命名 你只需要结束 deciPadField 编辑deciPadField.endEditing(true) 和 UIBarButtonSystemItem.whatever 是多余的。只需使用.flexibleSpace 【参考方案1】:

您正在使用 UITextViewDelegate 而不是 UITextFieldDelegate。 然后我建议为您的单元格设置一个协议并管理您的 ViewController 中的文本字段委托操作。

【讨论】:

你是对的。我对代表犯了一个错误。现在错误消失了。当我启动模拟器时,它似乎没有任何问题。如果我在自定义视图单元格中管理操作怎么办? 好 ;) 如果您不必处理事件或更改 ViewController 中的某些内容,则可以在自定义单元格中使用它。

以上是关于如何使用 Swift 在 CustomCell 中实现 inputAccessoryView 到 UITextField?的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义按钮从表格视图中删除一行 - Swift 3

在 tableView 上使用 CustomCell,如何调用 didSelectRowAtIndexPath?

CustomCell 标签值更改时如何更新 UITableView?

UItableView中的CustomCell崩溃[重复]

在 CustomCell 中获取 UILabel

在 InterfaceOrientation 上的 customCell 中重新定位 UIButtons