diff --git a/Note/FormatNoteViewController.swift b/Note/FormatNoteViewController.swift index 1bf2534..78bdc80 100644 --- a/Note/FormatNoteViewController.swift +++ b/Note/FormatNoteViewController.swift @@ -12,6 +12,15 @@ class FormatNoteViewController: UIViewController { private var textView: UITextView! private var iCloudButton: UIButton! private var noteButton: UIButton! + private var doneButton: UIBarButtonItem! + private var pasteButton: UIBarButtonItem! + private var resetButton: UIBarButtonItem! + private var rightBarButtonMode: RightBarButtonMode = .paste + + private enum RightBarButtonMode { + case paste + case reset + } override func viewDidLoad() { super.viewDidLoad() @@ -30,8 +39,14 @@ class FormatNoteViewController: UIViewController { textView.font = UIFont.preferredFont(forTextStyle: .body) textView.textContainerInset = UIEdgeInsets(top: 12, left: 12, bottom: 12, right: 12) textView.isEditable = true + textView.delegate = self view.addSubview(textView) + doneButton = UIBarButtonItem(title: "完成", style: .plain, target: self, action: #selector(didTapDoneButton)) + pasteButton = UIBarButtonItem(title: "粘贴文案", style: .plain, target: self, action: #selector(didTapPasteButton)) + resetButton = UIBarButtonItem(title: "重置", style: .plain, target: self, action: #selector(didTapResetButton)) + updateRightBarButtonItem() + iCloudButton = createBottomButton(title: "iCloud 格式化", color: .systemBlue) iCloudButton.addTarget(self, action: #selector(didTapiCloudButton), for: .touchUpInside) view.addSubview(iCloudButton) @@ -76,9 +91,53 @@ class FormatNoteViewController: UIViewController { return button } + @objc private func didTapDoneButton() { + textView.resignFirstResponder() + } + + @objc private func didTapPasteButton() { + if let string = UIPasteboard.general.string { + textView.text = string + } + } + + @objc private func didTapResetButton() { + textView.text = "" + rightBarButtonMode = .paste + updateRightBarButtonItem() + } + + private func updateRightBarButtonItem() { + if textView.isFirstResponder { + navigationItem.rightBarButtonItem = doneButton + } else { + switch rightBarButtonMode { + case .paste: + navigationItem.rightBarButtonItem = pasteButton + case .reset: + navigationItem.rightBarButtonItem = resetButton + } + } + } + @objc private func didTapiCloudButton() { + rightBarButtonMode = .reset + updateRightBarButtonItem() } @objc private func didTapNoteButton() { + rightBarButtonMode = .reset + updateRightBarButtonItem() + } +} + +extension FormatNoteViewController: UITextViewDelegate { + + func textViewDidBeginEditing(_ textView: UITextView) { + updateRightBarButtonItem() + } + + func textViewDidEndEditing(_ textView: UITextView) { + updateRightBarButtonItem() } }