【问题标题】:Display copy after select text from textview using swift使用swift从textview中选择文本后显示副本
【发布时间】:2018-03-11 23:48:38
【问题描述】:

使用此代码,它会告诉我:复制、选择、全选和粘贴。

但是我想先全选,当用户点击选择然后复制将显示,当点击复制然后粘贴将显示。

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

        if action == #selector(select(_:)) || action == #selector(copy(_:)) || action == #selector(selectAll(_:)) || action == #selector(paste(_:))
        {
            return true
        }
        return false
    }
}

【问题讨论】:

    标签: ios swift uitextview uimenucontroller


    【解决方案1】:

    你需要这样的东西,它只是状态的问题,如果你的 currentState 是一个你应该在菜单中显示的东西,你还需要覆盖这些方法中的每一个来改变当前状态

    import UIKit
    
    enum MenuState{
        case select
        case copy
        case paste
    }
    
    class CustomTextField: UITextField {
    
        var currentState : MenuState = .select
    
        override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool
        {
            switch self.currentState {
            case .select:
                if action == #selector(select(_:)) || action == #selector(selectAll(_:)){
                    return true
                }
            case .copy:
                if action == #selector(copy(_:)){
                    return true
                }
            case .paste:
                if action == #selector(paste(_:)){
                    return true
                }
            }
            return false
        }
    
        override func select(_ sender: Any?) {
            super.select(sender)
            self.currentState = .copy
        }
    
        override func selectAll(_ sender: Any?) {
            super.selectAll(sender)
            self.currentState = .copy
        }
    
        override func copy(_ sender: Any?) {
            super.copy(sender)
            self.currentState = .paste
        }
    
        override func paste(_ sender: Any?) {
            super.paste(sender)
            self.currentState = .select
        }
    
    }
    

    【讨论】:

    • 欢迎@Mili 请记住接受我的回答,快乐编码!
    猜你喜欢
    • 2011-06-26
    • 1970-01-01
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    相关资源
    最近更新 更多