答案 0 :(得分:2)
如果它对任何人都有帮助,那么要查找的关键字是“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
}