如何让DidSelectRow激活键盘?

时间:2016-06-10 13:05:33

标签: ios swift didselectrowatindexpath custom-keyboard

目标

当我点击桌面视图中的单元格并让所述键盘在所选单元格中编辑标签时,我想要显示一个键盘(自定义)。

我已阅读并尝试了

堆栈溢出和其他搜索的线程/教程

  1. A Swift example of Custom Views for Data Input (custom in-app keyboard)
  2. How to make custom keyboard only for my app in Swift?
  3. iOS 8: Creating a Custom Keyboard in Swift
  4. 除了其他结果和搜索(也是这些线程中推荐的读数),这些对我来说非常适合我想要它的键盘(这是特定于应用程序,我不想让用户安装键盘以使用应用程序),然而,没有人解释我如何能够激活"没有文本字段的键盘。

    我的思维过程是这样的:我将有一个带有文本字段的键盘,以便从按下的键接收输入。然后将该输入发送到所选单元格中的标签。问题是键盘显示没有任何东西可以调用它......

    为什么我不想要单元格中的文本字段:因为我认为让tableview单元格激活键盘更聪明/更优雅。我在其他应用程序中看到了这一点,但我无法弄清楚它是如何完成的。

    非常感谢您对此事的任何帮助。我是编程新手,使用Swift(所以没有任何线索Obj-C等)。

    谢谢!

2 个答案:

答案 0 :(得分:0)

TVDN,

在单元格中有一个textField而不是标签:)创建一个自定义单元格在cellForRowAtIndexPath

中的textField中为该类创建一个IBOutlet
let tableCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! myCell
tableCell.yourTextField.resignFirstResponder()

并在didSelectRowAtIndexPath

let tableCell = self.tableView.cellForRowAtIndexPath(indexPath)
self.tableView.dequeueReusableCellWithIdentifier("cell") as! myCell
    tableCell.yourTextField.becomeFirstResponder()

答案 1 :(得分:0)

经过围绕其他网站的大量讨论之后,说出来却很遗憾,但我想要的实际上是不可能的(如Duncan所述)。出于某种原因,我认为在编程中这个词不存在,但唉,它就在那里。好吧,我在解决这个限制方面的工作方式是在评论中以及我已经阅读的资源材料中回复:

我有2个观点:

  1. tableView - 这将包含我想要编辑值的项目列表。有多个标签,其中一个标签将由用户编辑。
  2. keyboardView - 允许用户输入的自定义键盘。
  3. 对于键盘,我使用了“数据输入的自定义视图的Swift示例”中描述的委托方法。这非常有效,并会将数据发送到tableView函数下的keyWasTapped

    接下来是tableView。我在自定义单元格中有3个标签,其中一个名为valueLabel。我不得不在我的故事板中添加一个textField,隐藏在用户将与之交互的tableview后面,并在didselectrow中包含了召唤键盘的命令:

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
            textField.becomeFirstResponder()
    }
    

    从那里我将从文本字段中获取文本并更新自定义单元格中的UILabels。至少这种方式我可以选择单元格而不是文本字段。因此,考虑到符合我想要的答案是回复的组合,我认为最好在这里说出来。

    感谢Sandeep和Larme的时间。