소개
텍스트 뷰 등에서 텍스트를 선택하면 아래와 같은 메뉴가 나옵니다.

여기에 기존에 없는 메뉴를 추가하고 싶다면 어떻게 해야 할까요? 아래 스크린샷에서 단어장에 추가 메뉴는 iOS에 없는 메뉴로 제가 새로 추가한 것입니다.

방법
Step 1
addCustomMenu() 함수를 추가하고, 뷰 컨트롤러의 viewDidLoad(_:)에 addCustomMenu()를 실행하도록 추가합니다.
override func viewDidLoad() {
super.viewDidLoad()
addCustomMenu()
}
private func addCustomMenu() {
let addToDictionary = UIMenuItem(title: "단어장에 추가", action: #selector(addToDictionary))
UIMenuController.shared.menuItems = [addToDictionary]
}
addToDictionaryUIMenuItem을 사용해 새로운 메뉴를 만듭니다.title에는 제목,action에는 메뉴를 클릭했을 때 실행할selector함수를 지정합니다.
UIMenuController.shared.menuItems- 텍스트를 선택했을 떄 나타나는 메뉴에서 사용자가 만든 새로운 메뉴를 추가합니다.
- 배열로
UIMenuItem을 추가합니다.
Step 2
셀렉터 함수(@objc)를 작성합니다.
@objc func addToDictionary() {
if let range = txvNotepad.selectedTextRange,
let selectedText = txvNotepad.text(in: range) {
print(selectedText)
// selectedText: 선택 영역의 텍스트
// 해야할 작업 작성
}
}
range- 텍스트가 선택된 범위 정보가 담겨있습니다.
selectedTextrange범위에서 선택된 텍스트입니다. 맨 위의 스크린샷에서Detect가 선택되었으므로selectedText는"Detect"입니다.- 이 변수를 바탕으로 해야 할 작업을 작성합니다.
출처
참고
위의 예제는 순서를 지정할 수 없습니다. (사용자가 추가한 메뉴는 iOS 기본 메뉴 이후에 추가됨)
메뉴를 완전히 새로 만들어서 원하는 메뉴를 맨 앞에 나오게 할 수 있습니다.





0개의 댓글