Я уверен, что есть простой ответ на этот вопрос, но я довольно новичок в программировании и много раз искал здесь и в нескольких учебных пособиях по отмене, которые я смог найти.
У меня есть две кнопки и UITextField с номером в нем. Кнопки увеличивают число в текстовом поле вверх или вниз на 1 соответственно. У меня есть еще несколько наборов этих двух кнопок и текстовое поле, каждое из которых представляет что-то свое. Затем у меня есть кнопки отмены и повтора, которые отменяют изменения в текстовых полях, вызванные нажатием кнопок. Все это прекрасно работает.
Так что теперь я пытаюсь добавить возможность отмены изменений от редактирования текстового поля непосредственно с помощью цифровой клавиатуры, чтобы оно попадало в тот же стек отмены, а затем его можно было отменить и повторить. из тех же кнопок отмены и повтора.
Вот фрагмент кода, который управляет отменой и возвратом нажатий кнопок. Затем, как я уже сказал, у меня есть еще несколько наборов, которые все go в том же стеке отмены. Спасибо.
UITextField
@IBOutlet weak var Money: UITextField!
Кнопки отмены и повтора
@IBAction func Undo(_ sender: UIButton)
{
undoManager?.undo()
}
@IBAction func Redo(_ sender: UIButton)
{
undoManager?.redo()
}
Кнопки вверх и вниз один
@IBAction func MonDown(_ sender: UIButton)
{
subtractOneMon(Mon: Money)
}
@IBAction func MonUp(_ sender: UIButton)
{
addOneMon(Mon: Money)
}
Функции Регистрация отмены / Повтора
func subtractOneMon(Mon: UITextField)
{
undoManager?.registerUndo(withTarget: self, handler:
{(targetSelf) in
targetSelf.addOneMon(Mon: self.Money)
})
let Mon = Double(Money.text!)
let NewMon = Double(Mon! - 1)
Money.text = Int(NewMon).description
}
func addOneMon(Mon: UITextField)
{
undoManager?.registerUndo(withTarget: self, handler:
{(targetSelf) in
targetSelf.subtractOneMon(Mon: self.Money)
})
let Mon = Double(Money.text!) ?? 0
let NewMon = Double(Mon + 1)
Money.text = Int(NewMon).description
}