First Responder에 대해 정확히 이해를 못해서 메뉴에 대한 핸들러를 구현하는데 어렵게 했다.
결론적으로 아래 동영상이 큰 힌트를 주었다.
유즈케이스: Help 메뉴에 대해 링크를 구현
xcode에서 macOS 앱을 만들면 기본적으로 다양한 메뉴를 자동으로 만들어준다.
맨 오른쪽에 Help 메뉴가 있는데 핸들러는 구현이 되어 있지않다.
스토리보드를 만들면 ViewController가 기본적으로 만들어져 있다.
여기에 핸들러를 구현을 해도 응답이 오지 않는다.
import Cocoa
class ViewController: NSViewController {
// ..
@IBAction func showHelp(_ sender: Any) {
guard let menuItem = sender as? NSMenuItem else { return }
print(menuItem)
}
그 이유는 해당 컨트롤러가 기본적으로 First Responder에 대한 응답을 받겠다고 하지 않기 때문이다.
방법은 간단하다. 받겠다고 알려주는 인터페이스를 추가해주면 된다.
import Cocoa
class ViewController: NSViewController {
// ..
override var acceptsFirstResponder: Bool {
return true
}
@IBAction func showHelp(_ sender: Any) {
guard let menuItem = sender as? NSMenuItem else { return }
print(menuItem)
}
아래는 별로 도움이 안되었던 링크
- stackoverflow.com/questions/35879475/overriding-menus-in-swift-with-storyboard
'Programing > My OSS' 카테고리의 다른 글
[Contact] 한글날 버전 v1.09 (0) | 2020.10.09 |
---|---|
[macOS 10.11+] Contact(한글 자모 합치기 for mac) (24) | 2020.10.03 |
[Swift] String test in PlayGround (0) | 2020.10.03 |
[Contact] 파일열기 다이얼로그: NSOpenPanel (0) | 2020.10.02 |
[GetTogether] macOS 용 자소교정기 - 발단 (0) | 2020.07.11 |