iOS 애플리케이션에 키보드 단축키 지원 추가(UIKit 및 SwiftUI 모두)

7713 단어 iOSiPadOSSwiftUI
이 짧은 기사에서는 애플리케이션에 키보드 단축키(keyboardShortcut, UIKeyCommand) 기능을 추가하는 방법에 대해 설명합니다. 이는 사용자가 iPad에 키보드를 연결한 상태에서 앱을 실행하는 경우에 유용합니다.

많은 사람들이 iPad 용 키보드 커버를 구입하고 있기 때문에 응용 프로그램에 키보드 단축키를 구현하는 것이 편리 할 것입니다. 구현은 몇 분만에 완료됩니다.

응용 프로그램에서 제공하는 모든 바로 가기를 보려면 iPad 키보드의 명령 ⌘ 키를 길게 누릅니다. 그러면 제공되는 바로 가기 목록 메뉴가 표시됩니다.



SwiftUI 애플리케이션에



수식 키 keyboardShortcut를 사용하면 SwiftUI의 대화식 UI 요소에 바로 가기 키를 쉽게 추가 할 수 있습니다.
public func keyboardShortcut(_ key: KeyEquivalent, modifiers: EventModifiers = .command) -> some View

예를 들어, 버튼에 키보드 단축키를 추가하려면:
Button(action: {
    counter += 1
}, label: {
    Text("+1")
})
.keyboardShortcut("a", modifiers: [.command])

자격 키에 대하여



자격 키를 하나 이상 설정할 수 있습니다. capsLock , shift , control , option , command , numericPad , and function .

사용자는 동작을 수행하기 위해 한정 키와 사용자가 정의한 문자 키를 눌러야 합니다.

예를 들어 키보드 단축키를 .keyboardShortcut("a", modifiers: [.command])로 설정하면 사용자는 명령 키와 문자 a 키를 동시에 눌러야 합니다.

키보드 단축키를 .keyboardShortcut("r", modifiers: [.command, .option])로 설정하면 사용자는 명령 키, 옵션 키, 문자 r 키를 동시에 눌러야 합니다.

키보드 단축키를 추가할 수 있는 UI 요소



버튼이나 스위치(토글)에 키보드 단축키를 추가할 수 있습니다.

UIKit 애플리케이션에



UIKit를 사용하는 어플리케이션의 경우, UIKeyCommand 오브젝트를 작성해, 주어진 일련의 키보드 단축키로 keyCommands 프로퍼티를 오버라이드(override) 할 수 있습니다.
class ViewController: UIViewController {

    override var keyCommands: [UIKeyCommand]? {
        return [
            .init(title: "新しいメモを作成する", action: #selector(self.actionCreate), input: "n", modifierFlags: [.command])
        ]
    }

    @objc func actionCreate() {
        print("create")
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

}



제목, 이미지, 수행할 작업, 한정 플래그 등을 지정할 수 있습니다. 이것은 문서에서 설명하는 함수의 코드입니다.
public convenience init(title: String = "", image: UIImage? = nil, action: Selector, input: String, modifierFlags: UIKeyModifierFlags = [], propertyList: Any? = nil, alternates: [UICommandAlternate] = [], discoverabilityTitle: String? = nil, attributes: UIMenuElement.Attributes = [], state: UIMenuElement.State = .off)

트위터 @MszPro

내 게시된 Qiita 기사 목록을 카테고리별로 확인할 수 있습니다.

좋은 웹페이지 즐겨찾기