swift -> UIMenuController(长按弹出的黑色横条菜单)的修改和自定义创建

 ***** 修改

针对 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)

    }


 

猜你喜欢

转载自mft.iteye.com/blog/2381003
今日推荐