如何使用 Swift 在 iOS 中检测多行键盘粘贴事件?

Posted

技术标签:

【中文标题】如何使用 Swift 在 iOS 中检测多行键盘粘贴事件?【英文标题】:How can I detect a multiline keyboard paste event in iOS with Swift? 【发布时间】:2016-10-07 22:26:40 【问题描述】:

我有一个包含 UITextFields 的 UITableView。我希望能够通过粘贴从另一个应用程序复制的文本来添加新的文本字段,并让粘贴事件创建与粘贴文本中的换行符一样多的文本字段。

例如,我从 Notes 应用中选择了这些行:

   Alice
   Fred
   Betsy

当我在编辑文本字段时通过键盘将该选择粘贴到我的应用程序中时,我会得到字符串“Alice Fred Betsy”,其中删除了换行符。这种删除必须在键盘深处发生,然后才能到达 textField。有什么方法可以干预并将粘贴变成三个粘贴事件,从而产生三个文本字段?

谢谢!

-艾伦

【问题讨论】:

【参考方案1】:

由于 UITextField 被强制只有一行文本,因此系统强制它不包含换行符(“\n”)。 您可以在这里做的是使用禁用滚动的 UITextViews,并将任何输入分成几行,然后用结果手动填充其他 UITextViews。

看看这个关于使用 UITextView 伪造 UITextField 的答案: https://***.com/a/37187098/1689376

【讨论】:

谢谢,亚历克斯。我希望我不必走 UITextView 路线;肯定有一种方法可以在 UITextField 看到之前截取文本吗?无论如何,我想我需要考虑改用 UITextView。

以上是关于如何使用 Swift 在 iOS 中检测多行键盘粘贴事件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在swift3 ios中使用键盘返回键将一个文本字段移动到另一个文本字段

使用 Swift 通过触摸任意位置来关闭 iOS 键盘

如何在 uilabel 中使用多行并根据 Swift 中的标签高度自动扩展 uitableview 行高?

Swift/iOS8:只允许某些键盘

如何使用 Swift 检测 iOS 应用程序何时出现在前台? [复制]

iOS:如何检测使用 BT 键盘时按下的任何键