要撤消UITextField中所做更改的调用函数是什么?

时间:2016-05-30 13:21:22

标签: ios swift swift2 undo

在iOS虚拟键盘的快捷栏中,有一个撤消按钮可撤消编辑。有没有办法将任意按钮与该功能相关联?

2 个答案:

答案 0 :(得分:1)

从iOS 8开始,摇动设备应触发撤消操作。您的视图控制器应该是第一个响应者,因此它可以响应撤消触发器。您可以通过成为视图即将出现的第一个响应者,然后在它即将消失时重新签名

override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        becomeFirstResponder()
    }
    override func viewWillDisappear(animated: Bool) {
        super.viewWillDisappear(animated)
        resignFirstResponder()
    }
    override func canBecomeFirstResponder() -> Bool {
        return true
    }
    override func viewDidLoad() {
        super.viewDidLoad()
    }

答案 1 :(得分:1)

这是我实现的解决方案(重做功能也可以这样做。)

import UIKit

class ViewController: UIViewController, UITextViewDelegate {

 @IBAction func undoButtonPressed(sender: AnyObject) {
        mainTextField.undoManager?.undo()
        enableDisableUndoButton()
    }

    func enableDisableUndoButton() { // to disable or enable the button when needed
        if mainTextField.undoManager?.canUndo == true {
            undoButton.enabled = true
        } else {
            undoButton.enabled = false
        }
    }

    func textViewDidChange(mainTextField: UITextView) { // monitors when user makes changes in the text field
        enableDisableUndoRedoButtons()
    }

}

要让undoManager记录通过字段上的代码所做的文本更改,我使用:

mainTextField.replaceRange((theRange), withText: newStr)