iOS创建“;复制粘贴";像UITableView中的popover(UIMenuController)

iOS创建“;复制粘贴";像UITableView中的popover(UIMenuController),ios,iphone,swift,Ios,Iphone,Swift,我试图创造一个棘手的弹出窗口,类似苹果的“复制”、“粘贴”方式。我不知道怎么做 是否有第三方库或本机组件?如果它对任何人都有帮助,则要查找的关键字是“UIMenuController” 我最终通过实现自定义UITableViewCell解决了这个问题 override func setSelected(_ selected: Bool, animated: Bool) { super.setSelected(selected, animated: animated)

我试图创造一个棘手的弹出窗口,类似苹果的“复制”、“粘贴”方式。我不知道怎么做


是否有第三方库或本机组件?

如果它对任何人都有帮助,则要查找的关键字是“UIMenuController”

我最终通过实现自定义UITableViewCell解决了这个问题

override func setSelected(_ selected: Bool, animated: Bool) {

        super.setSelected(selected, animated: animated)
        let showPasswordItem = UIMenuItem(title: "Show Password", action: #selector(showPass(_:)))
        let copyUserNameItem = UIMenuItem(title: "Copy Username", action: #selector(copyUsername(_:)))
        let copyPasswordItem = UIMenuItem(title: "Copy Password", action: #selector(copyPass(_:)))
        self.isPasswordShowing = !self.password.isSecureTextEntry
        UIMenuController.shared.menuItems?.removeAll()
        UIMenuController.shared.menuItems = [copyPasswordItem,copyUserNameItem,showPasswordItem,hidePasswordItem]
        UIMenuController.shared.update()

        if selected {
            self.becomeFirstResponder()
            let menu = UIMenuController.shared
            menu.setTargetRect(self.contentView.frame, in: self.contentView.superview!)
            menu.setMenuVisible(true, animated: true)
        }
    }

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {

     return  action == #selector(showPass(_:)) || action == #selector(copyUsername(_:)) || action == #selector(copyPass(_:))

}

override var canBecomeFirstResponder : Bool {
    return true
}

func showPass(_ send:AnyObject){
    self.password.isSecureTextEntry = false
    self.isPasswordShowing = true
}
func copyUsername(_ send:AnyObject){
    UIPasteboard.general.string = self.username.text
}
func copyPass(_ send:AnyObject){
    UIPasteboard.general.string = self.password.text
}
func hidePass(_ send:AnyObject){
    self.password.isSecureTextEntry = true
    self.isPasswordShowing = false
}

可能重复?您想在标签上使用吗?@SagarShirbhate想在桌面视图单元上使用它。对于PopOver,您可以使用任何第三方PopOver(或在iPAD中使用UIPopOver[在iphone中按类别制作]),对于复制使用[[UIPasteboard generalPasteboard]setString:copiedStr]@CaughtInflow感谢裁判。但我的问题是自己制作popover。