You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 16中如何保留「查找所选内容」并移除其他文本选单选项

解决iOS 16 UITextView仅保留「查找所选内容」菜单选项的方法

直接移除.lookup菜单会连带删除「查找所选内容」,因为该选项在iOS 16中被整合到了lookup菜单体系内。正确的做法是保留lookup菜单,但过滤掉不需要的子项:

  1. 先调用super.buildMenu确保系统生成完整的菜单结构
  2. 获取原lookup菜单,筛选出仅对应「查找所选内容」的UIAction
  3. 重新构建lookup菜单并替换原菜单

示例代码

override func buildMenu(with builder: UIMenuBuilder) {
    super.buildMenu(with: builder)
    
    if #available(iOS 16.0, *) {
        guard let originalLookupMenu = builder.menu(for: .lookup) else { return }
        
        // 仅保留「查找所选内容」对应的Action
        let filteredActions = originalLookupMenu.children.filter { element in
            guard let action = element as? UIAction else { return false }
            return action.identifier == .findSelectedText
        }
        
        // 替换原lookup菜单
        let updatedLookupMenu = UIMenu(title: originalLookupMenu.title, children: filteredActions)
        builder.replace(menu: .lookup, with: updatedLookupMenu)
    }
}

关键说明

  • UIAction.identifier.findSelectedText是系统内置的「查找所选内容」动作标识符,通过它可以精准定位目标选项
  • 必须先调用super.buildMenu,否则无法获取到系统自动生成的lookup菜单实例

内容的提问来源于stack exchange,提问作者Hassan Taleb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 01:55:31