【问题标题】:Detect paste operation on NSTextField in Swift在 Swift 中检测 NSTextField 上的粘贴操作
【发布时间】:2016-05-20 13:56:16
【问题描述】:

我想在“完全粘贴”到 NSTextField 之前配置一些文本。

是否有一种(简单的)方法来检测用户是否在粘贴文本而不是将其写入 Swift 中的 NSTextField?

【问题讨论】:

  • 这是一个想法:我现在不发布作为答案,因为我还没有测试过,也没有时间,但你可以尝试使用 Interface Builder将编辑菜单 > 粘贴按钮链接到您自己的功能。这将允许您在用户粘贴内容时执行操作。

标签: swift macos paste nstextfield


【解决方案1】:

您为什么不检查更改的大小?您可以实现委托方法,并执行以下操作:

func textDidChange(notification: NSNotification) {
let textField = notification.object
let newTextLength = textField.text.characters.count
...

您现在可以将文本的长度与前一个(您将存储在某处)的长度进行比较,如果它的变化超过 1 个字符,那么用户正在粘贴一些东西。我希望这会有所帮助。

【讨论】:

  • 它不检测文本是否被输入或是否被粘贴...它只检测是否有变化,改变的方式。
  • @Zaphod 这不适用于很多事情吗?我们观察到暗示着其他事物的事物,并假设隐含的动作发生了。
  • @Zaphod,这样你就可以检测到用户正在粘贴它。除非他一次只粘贴 1 个字符。您可能还可以使用某种方法 swizzling 来获取粘贴:选择器。我不建议你乱想。
  • 不幸的是,这并没有真正起作用;我试图在粘贴选择器上放置一个侦听器,但不知何故我从来没有遇到过它。问题是,我有一个容量有限的 textField,当用户将文本粘贴到其中时,我想把“剩下的”不适合此文本字段的字符进入另一个。
  • 如果您想检测用户试图将图像粘贴到文本字段中,这样您就可以拦截粘贴并将图像很好地移动到图像中。
【解决方案2】:

nstextfield 没有复制和粘贴功能。这些只能在 nstextview 中找到。问题是,当编辑文本字段时,它会在编辑过程中打开一个名为 fieldeditor 的文本视图。

在这里查看我的答案:

NSTextField: exposing its Copy and Paste methods

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 2020-07-22
    相关资源
    最近更新 更多