我已经通过快捷键cmd + C实现了复制tableView选择的单元格值。 现在我试图实现粘贴cmd + V. 当我单击tableView单元格时,它会被选中。再次点击,我正在编辑它。在编辑时,我按下cmd + V,没有任何反应。我可以写文字,但不能通过复制粘贴插入。
尝试通过“编辑”菜单手动实施 - >粘贴Cmd + V.
@IBAction func onPaste(_ sender: Any) {
let pasteBoard = NSPasteboard.general
pasteBoard.declareTypes([NSPasteboard.PasteboardType.string], owner: nil)
tableView.selectedCell().set??? = pasteBoard.string(forType: NSPasteboard.PasteboardType.string)
}
但不知道如何在NSCell上设置值。
答案 0 :(得分:0)
我的错误。我没有注意当我更改“编辑菜单”操作时,它会删除默认行为。 由于我更改了默认操作以调用我的自定义方法,因此:粘贴操作已从cmd + v快捷方式断开连接。
答案 1 :(得分:0)
我的应用程序也遇到了同样的问题,发现很容易解决。
始终可以使用鼠标上下文菜单将其复制并粘贴到NSTextField中。当具有编辑菜单时,使用带有cmd-c和cmd-v的键盘进行复制和粘贴将自动可用。
我添加了之前删除的编辑菜单项,复制粘贴立即可用。
答案 2 :(得分:-1)
要允许在TextField上粘贴,请通过扩展NSTextField创建自定义TextField类:
class EditingTextField: NSTextField {
private let commandKey = NSEventModifierFlags.command.rawValue
private let commandShiftKey = NSEventModifierFlags.command.rawValue | NSEventModifierFlags.shift.rawValue
override func performKeyEquivalent(with event: NSEvent) -> Bool {
if event.type == NSEventType.keyDown {
if (event.modifierFlags.rawValue & NSEventModifierFlags.deviceIndependentFlagsMask.rawValue) == commandKey {
switch event.charactersIgnoringModifiers! {
case "x":
if NSApp.sendAction(#selector(NSText.cut(_:)), to:nil, from:self) { return true }
case "c":
if NSApp.sendAction(#selector(NSText.copy(_:)), to:nil, from:self) { return true }
case "v":
if NSApp.sendAction(#selector(NSText.paste(_:)), to:nil, from:self) { return true }
case "z":
if NSApp.sendAction(Selector(("undo:")), to:nil, from:self) { return true }
case "a":
if NSApp.sendAction(#selector(NSResponder.selectAll(_:)), to:nil, from:self) { return true }
default:
break
}
}
else if (event.modifierFlags.rawValue & NSEventModifierFlags.deviceIndependentFlagsMask.rawValue) == commandShiftKey {
if event.charactersIgnoringModifiers == "Z" {
if NSApp.sendAction(Selector(("redo:")), to:nil, from:self) { return true }
}
}
}
return super.performKeyEquivalent(with: event)
}
}