UIMenuController 未显示在 textView 中
UIMenuController not showing in textView
我正在尝试启用在 UITextView 中激活的自定义 UIMenuController。在我的 viewDidLoad() 中,我有以下代码:
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)
}
接下来我实现了这些方法,正如我在许多指南中看到的那样:
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
}
谁能告诉我为什么菜单不显示?任何帮助将不胜感激。
好的,菜单没有显示,因为我在 canPerformAction() 方法中使用了不同类型的选择器。我不得不使用 #selector(method) 类型来实现和显示我的自定义菜单项操作。
我正在尝试启用在 UITextView 中激活的自定义 UIMenuController。在我的 viewDidLoad() 中,我有以下代码:
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)
}
接下来我实现了这些方法,正如我在许多指南中看到的那样:
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
}
谁能告诉我为什么菜单不显示?任何帮助将不胜感激。
好的,菜单没有显示,因为我在 canPerformAction() 方法中使用了不同类型的选择器。我不得不使用 #selector(method) 类型来实现和显示我的自定义菜单项操作。