简体   繁体   English

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

[英]iOS create “copy paste” like popover (UIMenuController) in UITableView

Im trying to create a intractable pop over similar to how apples "copy", "paste". 我试图创建一个类似于苹果“复制”,“粘贴”的难以处理的流行音乐。 Im not sure how to do it. 我不知道怎么做。

在此输入图像描述

Is there a 3rd party lib or is it a native component ? 是否有第三方库或它是本机组件?

If it helps anyone, the keyword to look for is "UIMenuController" 如果它可以帮助任何人,要查找的关键字是“UIMenuController”

I finally managed to solve this by implementing a custom UITableViewCell 我终于通过实现自定义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
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM