【问题标题】:How to have DidSelectRow activate keyboard?如何让 DidSelectRow 激活键盘?
【发布时间】:2016-10-11 11:17:50
【问题描述】:

目标

我希望有一个键盘(自定义)在我单击我的表格视图中的一个单元格并说键盘编辑所选单元格中的标签时显示。

我已阅读并尝试过的内容

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

  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

连同其他结果和搜索(以及这些线程中的推荐读数),这些对我以我想要的方式获得键盘非常有用(这是特定于应用程序的,我不想让用户安装键盘来使用应用程序),但是,没有人解释我如何在没有文本字段的情况下“激活”键盘。

我的想法是这样的:我将有一个带有文本字段的键盘,以便接收来自按下的键的输入。然后,此输入将被发送到所选单元格中的标签。问题在于键盘显示没有任何名称...

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

非常感谢您对此事的任何帮助。我对编程完全陌生,正在使用 Swift(所以不知道 Obj-C 之类的东西)。

谢谢!

【问题讨论】:

  • 我不明白你为什么不想要一个 UITextField (没有“白色背景,没有边框等),而只是“更新标签”,因为你可以自定义 UITextField 来制作它看起来像一个“标签”。在didSelectRowAtIndexPath: 中,只需执行[theCellTextField becomesFirstResponder](或类似的东西)
  • 标签不可编辑。它不会显示键盘。你试图做的事情是不可能的。你需要一个文本字段,而不是一个标签。
  • 谢谢拉尔姆和邓肯,所以我想没有办法从选择单元格中调用单独的视图?一个不覆盖整个窗口的视图,并且可以在其中包含任何内容,例如按钮和文本字段?

标签: ios swift didselectrowatindexpath custom-keyboard


【解决方案1】:

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

【讨论】:

  • 您好 Sandeep,感谢您的快速回复!我肯定会在我的应用程序中使用它,但是,我希望文本字段带有键盘。我想问题是:当我在我的表格视图中选择一个单元格时,我怎么能调用一个视图(不覆盖整个窗口)。这个视图可以是任何东西,因此,我也可以在那里制作键盘......也许我只是在这里问错了问题......?
【解决方案2】:

好吧,在围绕其他网站进行了大量讨论之后,说起来很遗憾,但我想要的实际上是不可能的(就像 Duncan 所说的那样)。出于某种原因,我认为在编程中这个词不存在,但可惜它就在那里。好吧,我解决这个限制的方法是在 cmets 以及我已经阅读的资源材料中回复的:

我有 2 个视图:

  1. tableView - 这将包含我想要编辑值的项目列表。有多个标签,其中一个将由用户编辑。
  2. keyboardView - 允许用户输入的自定义键盘。

对于键盘,我使用了“用于数据输入的自定义视图的 Swift 示例”中描述的委托方法。这非常有效,并将数据发送到keyWasTapped 函数下的tableView

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

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

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

感谢 Sandeep 和 Larme 抽出宝贵时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-12
    • 2015-03-27
    • 2021-08-29
    • 1970-01-01
    • 2019-01-30
    • 2013-08-16
    • 2012-09-21
    • 1970-01-01
    相关资源
    最近更新 更多