【问题标题】:How to edit a text field by touching a button within a cell swift如何通过快速触摸单元格内的按钮来编辑文本字段
【发布时间】:2016-10-08 01:18:43
【问题描述】:

我在 collectionview 控制器中有一个文本字段,我希望能够通过按下单元格中的按钮来调用它。有没有办法从单元格中创建该文本字段 firstResponder()?

【问题讨论】:

  • 您的收藏视图中有多少个部分?
  • 我想只有 1
  • 还有几个问题,只是为了确保我的方向正确。文本字段是否也在单元格中,或者它只是 collectionView 之外的视图控制器的属性?
  • 如果文本字段在集合视图之外,则非常简单。如果每个单元格都有自己的文本字段,需要在按下按钮时激活它,这有点复杂,但我可以编写一些示例代码来提供帮助。
  • 是的,正如我所说,文本字段在主视图控制器中。它实际上甚至不在集合视图中,只是与整个事物重叠。

标签: ios swift uicollectionview first-responder


【解决方案1】:

好的,所以我让它工作了,但我不确定它的效率如何,所以如果有人知道更好的方法,请发布答案,我会在一两天后选择最好的。这就是我使用:

button.addTarget(self.supernode, action: #selector(CollectionViewController.buttonTapped), forControlEvents: .TouchUpInside)

它说“supernode”的原因是因为我正在使用 asyncdisplaykit 但 superview 应该做同样的事情,除非你必须加强两次而不是一次,不确定。无论如何,我用它在主视图控制器中运行了一个名为 buttonTapped() 的函数。

func buttonTapped(sender: ASButtonNode) {
        self.txtField.becomeFirstResponder()
    }

如果使用 uikit 或 storyboard 或 w/e,再次用视图替换节点。如果这不是“正确”的方式,请告诉我,因为性能对我很重要。

【讨论】:

  • 你说得对。通常发送者是一个 UIButton
  • 这个 ASButtonNode 有什么用?你为什么把它放在那里
  • 正如我所说,我使用的是 AsyncDisplayKit,它使用节点而不是视图,因此如果使用 UIKit / Storyboard,只需将“节点”一词替换为“视图”。我想我在答案中提到了两次大声笑..
猜你喜欢
  • 2018-03-12
  • 2019-01-14
  • 2021-01-03
  • 2015-09-19
  • 1970-01-01
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多