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

本文介绍如何在Swift中修改和自定义创建UIMenuController,特别是在UITextField和UIWebView中,展示如何替换默认的‘拷贝’、‘选择’、‘分享’等菜单选项,实现自定义的长按操作菜单效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 ***** 修改

 

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

    }

 


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值