diff --git a/LearnEnglish/LearnEnglish/Views/QuizViewController.swift b/LearnEnglish/LearnEnglish/Views/QuizViewController.swift index b20a010..7827180 100644 --- a/LearnEnglish/LearnEnglish/Views/QuizViewController.swift +++ b/LearnEnglish/LearnEnglish/Views/QuizViewController.swift @@ -234,6 +234,9 @@ final class QuizViewController: UIViewController { nextButton.isEnabled = false nextButton.isHidden = false } + spellingView.onSubmit = { [weak self] in + self?.primaryButtonTapped() + } spellingView.activate() } else if isDictation { dictationView.reset() diff --git a/LearnEnglish/LearnEnglish/Views/SpellingInputView.swift b/LearnEnglish/LearnEnglish/Views/SpellingInputView.swift index 639206d..6bab347 100644 --- a/LearnEnglish/LearnEnglish/Views/SpellingInputView.swift +++ b/LearnEnglish/LearnEnglish/Views/SpellingInputView.swift @@ -2,6 +2,7 @@ import UIKit final class SpellingInputView: UIView, UITextFieldDelegate { var onChange: (() -> Void)? + var onSubmit: (() -> Void)? private let hiddenField = UITextField() private let stack = UIStackView() @@ -56,6 +57,23 @@ final class SpellingInputView: UIView, UITextFieldDelegate { hiddenField.frame = .zero addSubview(hiddenField) + let accessory = UIView() + accessory.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 52) + accessory.backgroundColor = .clear + let confirmButton = UIButton(type: .system) + confirmButton.setTitle("确认", for: .normal) + confirmButton.titleLabel?.font = .systemFont(ofSize: 17, weight: .semibold) + confirmButton.addAction(UIAction { [weak self] _ in + self?.onSubmit?() + }, for: .touchUpInside) + confirmButton.translatesAutoresizingMaskIntoConstraints = false + accessory.addSubview(confirmButton) + NSLayoutConstraint.activate([ + confirmButton.trailingAnchor.constraint(equalTo: accessory.trailingAnchor, constant: -8), + confirmButton.topAnchor.constraint(equalTo: accessory.topAnchor, constant: 8) + ]) + hiddenField.inputAccessoryView = accessory + addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(reactivate))) }