如何在 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 中的主要内容,如果未能解决你的问题,请参考以下文章
当所有文本字段都填写在uitableviewcell(SWIFT)中时如何启用按钮
如何在 ng-repeat 中使字段显示为没有 HTML 代码的文本
如何在 swift 中使自定义 UITableViewCell 中的链接可点击