VoiceOver wip

This commit is contained in:
Justin Mazzocchi 2021-02-02 13:32:39 -08:00
parent ef80b743da
commit 5bfe75c778
No known key found for this signature in database
GPG key ID: E223E6937AAFB01C
7 changed files with 46 additions and 2 deletions

View file

@ -134,6 +134,8 @@
"identities.pending" = "Pending";
"lists.new-list-title" = "New List Title";
"load-more" = "Load More";
"load-more.newer.accessibility-label" = "Load newer items";
"load-more.older.accessibility-label" = "Load older items";
"main-navigation.timelines" = "Timelines";
"main-navigation.explore" = "Explore";
"main-navigation.notifications" = "Notifications";

View file

@ -137,7 +137,11 @@ class TableViewController: UITableViewController {
}
override func tableView(_ tableView: UITableView, shouldHighlightRowAt indexPath: IndexPath) -> Bool {
viewModel.canSelect(indexPath: indexPath)
if case .loadMore = dataSource.itemIdentifier(for: indexPath), UIAccessibility.isVoiceOverRunning {
return false
}
return viewModel.canSelect(indexPath: indexPath)
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

View file

@ -17,7 +17,7 @@ public final class LoadMoreViewModel: ObservableObject, CollectionItemViewModel
}
}
extension LoadMoreViewModel {
public extension LoadMoreViewModel {
func loadMore() {
eventsSubject.send(
loadMoreService.request(direction: direction)

View file

@ -59,6 +59,7 @@ extension ConversationView: UIContentView {
}
private extension ConversationView {
// swiftlint:disable:next function_body_length
func initialSetup() {
let containerStackView = UIStackView()
let sideStackView = UIStackView()
@ -111,6 +112,8 @@ private extension ConversationView {
avatarsHeightConstraint,
sideStackView.widthAnchor.constraint(equalToConstant: .avatarDimension)
])
isAccessibilityElement = true
}
func applyConversationConfiguration() {
@ -125,7 +128,20 @@ private extension ConversationView {
displayNamesLabel.attributedText = mutableDisplayNames
timeLabel.text = viewModel.statusViewModel?.time
timeLabel.accessibilityLabel = viewModel.statusViewModel?.accessibilityTime
statusBodyView.viewModel = viewModel.statusViewModel
avatarsView.viewModel = viewModel
let accessibilityAttributedLabel = NSMutableAttributedString(attributedString: mutableDisplayNames)
if let statusBodyAccessibilityAttributedLabel = statusBodyView.accessibilityAttributedLabel {
accessibilityAttributedLabel.appendWithSeparator(statusBodyAccessibilityAttributedLabel)
}
if let accessibilityTime = viewModel.statusViewModel?.accessibilityTime {
accessibilityAttributedLabel.appendWithSeparator(accessibilityTime)
}
self.accessibilityAttributedLabel = accessibilityAttributedLabel
}
}

View file

@ -68,6 +68,7 @@ private extension LoadMoreView {
static let directionChangeMax = CGFloat.pi
static let directionChangeIncrement = CGFloat.pi / 10
// swiftlint:disable:next function_body_length
func initialSetup() {
for arrowImageView in [leadingArrowImageView, trailingArrowImageView] {
addSubview(arrowImageView)
@ -106,6 +107,25 @@ private extension LoadMoreView {
activityIndicatorView.centerXAnchor.constraint(equalTo: centerXAnchor),
activityIndicatorView.centerYAnchor.constraint(equalTo: centerYAnchor)
])
isAccessibilityElement = true
accessibilityLabel = NSLocalizedString("load-more", comment: "")
accessibilityCustomActions = [
UIAccessibilityCustomAction(
name: NSLocalizedString("load-more.older.accessibility-label", comment: "")) { [weak self] _ in
self?.loadMoreConfiguration.viewModel.direction = .down
self?.loadMoreConfiguration.viewModel.loadMore()
return true
},
UIAccessibilityCustomAction(
name: NSLocalizedString("load-more.newer.accessibility-label", comment: "")) { [weak self] _ in
self?.loadMoreConfiguration.viewModel.direction = .up
self?.loadMoreConfiguration.viewModel.loadMore()
return true
}
]
}
func applyLoadMoreConfiguration() {

View file

@ -10,6 +10,7 @@ final class ConversationTableViewCell: UITableViewCell {
guard let viewModel = viewModel else { return }
contentConfiguration = ConversationContentConfiguration(viewModel: viewModel).updated(for: state)
accessibilityElements = [contentView]
}
override func layoutSubviews() {

View file

@ -10,6 +10,7 @@ final class LoadMoreTableViewCell: UITableViewCell {
guard let viewModel = viewModel else { return }
contentConfiguration = LoadMoreContentConfiguration(viewModel: viewModel)
accessibilityElements = [contentView]
}
override func layoutSubviews() {