2016-12-14 3 views
1

UITextView 내에서 활성화되는 사용자 정의 UIMenuController를 사용하려고합니다.UIMenuController가 textView에 표시되지 않습니다.

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.noteTextView.delegate = self 
    let tapGesture = UITapGestureRecognizer.init(target: self, action: #selector(enableCustomMenuControllerAtTap(_:))) 
    self.noteTextView.addGestureRecognizer(tapGesture) 
} 

제스처를 처리하는 방법은 다음과 같습니다 :

func enableCustomMenuControllerAtTap(_ gesture: UITapGestureRecognizer) { 
    print("tap") 
    view.becomeFirstResponder() 
    let OP1MenuController: UIMenuController 
    OP1MenuController = UIMenuController.shared 

    let font = UIMenuItem(title: "Font", action: #selector(pickFont)) 
    let color = UIMenuItem(title: "Color", action: #selector(pickColor)) 
    OP1MenuController.menuItems = [font, color] 

    let point = gesture.location(in: view) 
    OP1MenuController.setTargetRect(CGRect(x: point.x, y: point.y, width: 200, height: 200), in: view) 

    OP1MenuController.arrowDirection = UIMenuControllerArrowDirection.down 
    OP1MenuController.setMenuVisible(true, animated: true) 
} 

다음으로 구현 나는 많은 가이드에서 보았 듯이 이러한 방법 :

내 viewDidLoad에() 나는 다음과 같은 코드가에
func pickFont(sender: UIMenuItem) { 

} 

func pickColor(sender: UIMenuItem) { 

} 

override var canBecomeFirstResponder: Bool { 
    return true 
} 

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { 
    if action == Selector(("pickFont")) || action == Selector(("pickColor")) 
    { 
     if (noteTextView.selectedRange.length > 0) { 
      return true 
     } 
    } 
    return false 
} 

누군가 메뉴가 표시되지 않는 이유를 말해 줄 수 있습니까? 어떤 도움이라도 대단히 감사 할 것입니다.

답변

0

canPerformAction() 메서드에서 다른 유형의 선택기를 사용했기 때문에 메뉴가 표시되지 않았습니다. 사용자 정의 메뉴 항목 작업을 구현하고 표시하려면 #selector (메서드) 유형을 사용해야했습니다.

관련 문제