【问题标题】:Undo redo Operation撤消重做操作
【发布时间】:2017-09-18 21:21:35
【问题描述】:

我已使用以下代码进行撤消重做操作。我正在更改标签的背景颜色,我的撤消/重做操作工作正常,但现在我添加了标签的文本颜色,所以每当我单独更改背景颜色或文本颜色时,它都可以正常工作,但如果我同时更改背景颜色和文本颜色时间那么它将无法正常工作。我应该怎么办?请帮忙!

@IBOutlet var myObject: UILabel!

//  MARK: - View Life Cycle
override func viewDidLoad() {
    super.viewDidLoad()
    myObject.backgroundColor = UIColor.yellow
}

func setMyObjectColor(_ color: UIColor) {
        (undoManager?.prepare(withInvocationTarget: self) as AnyObject).setMyObjectColor(myObject.backgroundColor!)
        myObject.backgroundColor = color
}

func setMyObjectTextColor(_ color: UIColor) {
        (undoManager?.prepare(withInvocationTarget: self) as AnyObject).setMyObjectTextColor(myObject.textColor!)
        myObject.textColor = color
}

@IBAction func changeColor(_ sender: Any){
    setMyObjectColor(UIColor.blue)
}

@IBAction func changeTextColor(_ sender: Any){
    setMyObjectTextColor(UIColor.white)
}

@IBAction func undo(_ sender: Any) {
    undoManager?.undo()
}

@IBAction func redo(_ sender: Any) {
    undoManager?.redo()
}}

【问题讨论】:

  • 用设置文本的代码更新您的问题(不要担心撤消/重做部分)。
  • @rmaddy 我给了一个按钮,用于基于点击添加文本我已经管理了我需要的任何功能,但问题是一旦添加了文本,我该如何撤消或重做它?
  • 如果您不显示您所指的文字,没有人可以提供帮助。请使用有关您希望撤消/重做的文本更改的相关代码更新您的代码。显示与文本相关的代码后,有人可以帮助您使用撤消/重做功能。
  • @rmaddy 请检查我更新的问题。

标签: ios swift undo-redo


【解决方案1】:
@IBOutlet var myObject: UILabel!

//  MARK: - View Life Cycle
override func viewDidLoad() {
    super.viewDidLoad()
    myObject.backgroundColor = UIColor.yellow
}

func setMyObjectColor(_ Backcolor: UIColor) {
        (undoManager?.prepare(withInvocationTarget: self) as AnyObject).setMyObjectColor(myObject.backgroundColor!)
        myObject.backgroundColor = Backcolor
}

func setMyObjectTextColor(_ Textcolor: UIColor) {
        (undoManager?.prepare(withInvocationTarget: self) as AnyObject).setMyObjectTextColor(myObject.textColor!)
        myObject.textColor = Textcolor
}

func setMyObjectText(_ Text: String) {
    (undoManager?.prepare(withInvocationTarget: self) as AnyObject).setMyObjectText((myObject.text! as AnyObject) as! String)
    myObject.text = Text
}

@IBAction func changeColor(_ sender: Any){
    setMyObjectColor(UIColor.blue)
}

@IBAction func changeTextColor(_ sender: Any){
    setMyObjectTextColor(UIColor.white)
}

@IBAction func changeText(_ sender: Any) {
    setMyObjectText("Khush")
}

@IBAction func undo(_ sender: Any) {
    undoManager?.undo()
}

@IBAction func redo(_ sender: Any) {
    undoManager?.redo()
}

使用此代码解决了我的问题。

【讨论】:

  • 这与您的问题有什么关系?您所做的只是添加与您问题中的信息或代码无关的 setMyObjectTextchangeText 方法。这就是为什么我要求你澄清你的问题。
猜你喜欢
  • 2012-06-22
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 2011-01-07
  • 2014-07-07
  • 2010-12-10
相关资源
最近更新 更多