如何在 swift 中使文本字段功能在 tableview 中

Posted

技术标签:

【中文标题】如何在 swift 中使文本字段功能在 tableview 中【英文标题】:How to make textfield functional inside a tableview on swift 【发布时间】:2017-03-14 16:20:39 【问题描述】:

我正在尝试创建一个表格视图,其中每个单元格都有多个文本字段。

我能够创建一个带有文本字段的简单列表,但是当我按下文本字段时没有任何反应。键盘没有弹出,感觉好像事件正在被其他视图捕获。

我确保将用户交互设置为启用。 我尝试将视图推到前面,就像您在评论中看到的那样。

我错过了什么?

我的表叫做 MainTable 并且 我的 InputviewCell 只是一个普通单元格 (xib),带有一个名为 txtFieldTemp 的文本字段

import Foundation
import UIKit

class PrioritiesGridViewController: UIViewController,UITableViewDataSource, UITableViewDelegate, UITextFieldDelegate
 

@IBOutlet var mainTable: UITableView!

override func viewDidLoad() 
    super.viewDidLoad()

    mainTable.delegate = self
    mainTable.dataSource = self
    //mainTable.allowsSelection = false


let data = AuxClass()

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat 
    return 62


func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
    return data.everything().count


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    let cell = Bundle.main.loadNibNamed("InputTextViewCell", owner: self, options: nil)?.first as! InputTextViewCell

    cell.selectionStyle = UITableViewCellSelectionStyle.none
    cell.txtFieldTemp.delegate = self
    cell.txtFieldTemp.text = "test"

    cell.txtFieldTemp.allowsEditingTextAttributes = true
    //self.view.bringSubview(toFront: cell.txtFieldTemp)

    return cell;


override var canBecomeFirstResponder: Bool  return true

 func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool 
    return true



func numberOfSections(in tableView: UITableView) -> Int 
    return 1;


func textFieldDidBeginEditing(_ textField: UITextField) 
    self.isEditing = true






class AuxClass

var objectsArray = [Objects(
    field1: "teste",
    field2: 3),
    Objects(
        field1: "teste1",
        field2: 4)
]

struct Objects 
    var field1: String!
    var field2: Int



func everything() -> [Objects]

    return objectsArray


【问题讨论】:

你是在模拟器模式下测试吗? 在 ipad 9.7 横向 ios 10 上是的 确保您的键盘没有在您的模拟器设置中被禁用 我尝试了这两个建议 切换键盘不显示键盘并在单击后尝试在 Mac 键盘上键入,因为选择也没有做任何事情 另外,如果您将 NIB 用于单元格,则应注册该单元格 NIB,例如 ***.com/questions/28489720/…,而不是在 cellForRowAt 中加载 nib... 【参考方案1】:

试试cell.txtFieldTemp.becomeFirstResponder()。看着apple documentation,我想它会迫使它成为第一响应者。

【讨论】:

以上是关于如何在 swift 中使文本字段功能在 tableview 中的主要内容,如果未能解决你的问题,请参考以下文章

表单提交后如何在html中使文本字段不可编辑

当所有文本字段都填写在uitableviewcell(SWIFT)中时如何启用按钮

如何在 ng-repeat 中使字段显示为没有 HTML 代码的文本

如何在 swift 中使自定义 UITableViewCell 中的链接可点击

试图在 Swift 中使 UISearchController 的功能类似于 iPhone 中的语言设置

如何在 Django Administration 中使文本加粗