Skip to content

Commit b242e19

Browse files
committed
Implemented keyboard shortcuts for NSTextField.
1 parent cd43bb0 commit b242e19

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

pock_headline_news.xcodeproj/project.pbxproj

+4
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
4246EF612712EB0F003541E9 /* PockKit in Frameworks */ = {isa = PBXBuildFile; productRef = 4246EF602712EB0F003541E9 /* PockKit */; };
2323
4246EF642712EB40003541E9 /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = 4246EF632712EB40003541E9 /* Defaults */; };
2424
4246EF672712EB70003541E9 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = 4246EF662712EB70003541E9 /* SnapKit */; };
25+
42476943274D5BF700D4761C /* NSTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42476942274D5BF700D4761C /* NSTextField.swift */; };
2526
/* End PBXBuildFile section */
2627

2728
/* Begin PBXFileReference section */
@@ -41,6 +42,7 @@
4142
422F670026F6620700AEFAE0 /* HeadLineNewsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadLineNewsView.swift; sourceTree = "<group>"; };
4243
422F670226F6F4D400AEFAE0 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
4344
422F670326F73D9C00AEFAE0 /* NSViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSViewController.swift; sourceTree = "<group>"; };
45+
42476942274D5BF700D4761C /* NSTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSTextField.swift; sourceTree = "<group>"; };
4446
/* End PBXFileReference section */
4547

4648
/* Begin PBXFrameworksBuildPhase section */
@@ -110,6 +112,7 @@
110112
children = (
111113
422F66EC26F3A08D00AEFAE0 /* NSColor.swift */,
112114
422F670326F73D9C00AEFAE0 /* NSViewController.swift */,
115+
42476942274D5BF700D4761C /* NSTextField.swift */,
113116
);
114117
path = Extension;
115118
sourceTree = "<group>";
@@ -255,6 +258,7 @@
255258
isa = PBXSourcesBuildPhase;
256259
buildActionMask = 2147483647;
257260
files = (
261+
42476943274D5BF700D4761C /* NSTextField.swift in Sources */,
258262
422F66ED26F3A08D00AEFAE0 /* NSColor.swift in Sources */,
259263
4200789626F8EB4F007AE2DF /* TextFieldAlert.swift in Sources */,
260264
422F670426F73D9C00AEFAE0 /* NSViewController.swift in Sources */,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
//
2+
// NSTextField.swift
3+
// pock_headline_news
4+
//
5+
// Created by p-x9 on 2021/11/24.
6+
//
7+
//
8+
9+
import Cocoa
10+
11+
extension NSTextField {
12+
override open func performKeyEquivalent(with event: NSEvent) -> Bool {
13+
let flags = event.modifierFlags.intersection(.deviceIndependentFlagsMask)
14+
let characters = event.charactersIgnoringModifiers?.lowercased()
15+
switch flags {
16+
case [.command]:
17+
let selector: Selector
18+
switch characters {
19+
case "x":
20+
selector = #selector(NSText.cut(_:))
21+
case "c":
22+
selector = #selector(NSText.copy(_:))
23+
case "v":
24+
selector = #selector(NSText.paste(_:))
25+
case "a":
26+
selector = #selector(NSText.selectAll(_:))
27+
case "z":
28+
selector = Selector(("undo:"))
29+
default:
30+
return super.performKeyEquivalent(with: event)
31+
}
32+
return NSApp.sendAction(selector, to: nil, from: self)
33+
case [.shift, .command] where characters == "z":
34+
return NSApp.sendAction(Selector(("redo:")), to: nil, from: self)
35+
default:
36+
return super.performKeyEquivalent(with: event)
37+
}
38+
}
39+
}

0 commit comments

Comments
 (0)