拼写输入短词居中长词可滚动

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-07-20 21:37:18 +08:00
parent 3f5e4cad41
commit bae0af27ef
@@ -5,6 +5,7 @@ final class SpellingInputView: UIView, UITextFieldDelegate {
private let hiddenField = UITextField() private let hiddenField = UITextField()
private let stack = UIStackView() private let stack = UIStackView()
private let scrollView = UIScrollView()
private var chars: [String] = [] private var chars: [String] = []
private var blankPositions: [Int] = [] private var blankPositions: [Int] = []
@@ -21,7 +22,6 @@ final class SpellingInputView: UIView, UITextFieldDelegate {
override init(frame: CGRect) { override init(frame: CGRect) {
super.init(frame: frame) super.init(frame: frame)
let scrollView = UIScrollView()
scrollView.showsHorizontalScrollIndicator = false scrollView.showsHorizontalScrollIndicator = false
scrollView.showsVerticalScrollIndicator = false scrollView.showsVerticalScrollIndicator = false
addSubview(scrollView) addSubview(scrollView)
@@ -158,6 +158,22 @@ final class SpellingInputView: UIView, UITextFieldDelegate {
return box return box
} }
refreshBoxes() refreshBoxes()
DispatchQueue.main.async { [weak self] in
self?.updateAlignment()
}
}
private func updateAlignment() {
let totalWidth = CGFloat(chars.count) * 32 + CGFloat(max(chars.count - 1, 0)) * 6
let available = scrollView.bounds.width
if totalWidth <= available {
let inset = max(0, (available - totalWidth) / 2)
scrollView.contentInset = UIEdgeInsets(top: 0, left: inset, bottom: 0, right: inset)
scrollView.isScrollEnabled = false
} else {
scrollView.contentInset = .zero
scrollView.isScrollEnabled = true
}
} }
@objc private func boxTapped(_ gesture: UITapGestureRecognizer) { @objc private func boxTapped(_ gesture: UITapGestureRecognizer) {