***** 修改
针对 UITextField , UIWebView 系统自带 在选择一段文字后 ,有 “拷贝”,“选择”,“分享” 等 菜单, 现在要修改
例如 : UITextField
func myMenu() { print(textField.text(in: textField.selectedTextRange!)) /* 如果是webView webView.evaluateJavaScript("getSelection().toString()", completionHandler: { (result, error) in if result != nil { print("selecter:"+(result as! String) ); } else { } }) */ } var textField:UITextField!; override func viewDidLoad() { super.viewDidLoad() textField = UITextField(frame: CGRect(x: 20, y: 80, width: 100, height: 80)); textField.text = "sdfassdf sdf sdf sdf s dfs f sd fds"; self.view.addSubview(textField) // let menuItem1 = UIMenuItem(title: "我的菜单", action: #selector(myMenu)) UIMenuController.shared.menuItems = [menuItem1] }
效果
** ****** 创建
//这句很重要, 弹出UIMenuController.shared 即便没有输入焦点也可以显示 override var canBecomeFirstResponder: Bool{ return true; } func showLongPress(sender:UILongPressGestureRecognizer){ self.view.becomeFirstResponder() let menuController = UIMenuController.shared let item1 = UIMenuItem(title: "测试1", action: #selector(test)) let item2 = UIMenuItem(title: "测试2", action: #selector(test)) menuController.menuItems = [item1, item2] menuController.setTargetRect(self.view.bounds, in: self.view!)//其中in:要显示在哪个视图上面/下面 menuController.setMenuVisible(true, animated: true) }