Initial navigation voiceover support

This commit is contained in:
Peter Iakovlev 2019-01-18 01:36:46 +04:00
parent 6fe1f84daf
commit f0c3398118
2 changed files with 30 additions and 7 deletions

View File

@ -80,14 +80,23 @@ public class ChatListController: TelegramController, KeyShortcutResponder, UIVie
self.tabBarItem.image = icon
self.tabBarItem.selectedImage = icon
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.Common_Edit, style: .plain, target: self, action: #selector(self.editPressed))
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: PresentationResourcesRootController.navigationComposeIcon(self.presentationData.theme), style: .plain, target: self, action: #selector(self.composePressed))
let leftBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.Common_Edit, style: .plain, target: self, action: #selector(self.editPressed))
leftBarButtonItem.accessibilityLabel = self.presentationData.strings.Common_Edit
self.navigationItem.leftBarButtonItem = leftBarButtonItem
let rightBarButtonItem = UIBarButtonItem(image: PresentationResourcesRootController.navigationComposeIcon(self.presentationData.theme), style: .plain, target: self, action: #selector(self.composePressed))
rightBarButtonItem.accessibilityLabel = "Compose"
self.navigationItem.rightBarButtonItem = rightBarButtonItem
} else {
self.navigationItem.title = "Channels"
self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.Common_Edit, style: .plain, target: self, action: #selector(self.editPressed))
let rightBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.Common_Edit, style: .plain, target: self, action: #selector(self.editPressed))
rightBarButtonItem.accessibilityLabel = self.presentationData.strings.Common_Edit
self.navigationItem.rightBarButtonItem = rightBarButtonItem
}
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.DialogList_Title, style: .plain, target: nil, action: nil)
let backBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.DialogList_Title, style: .plain, target: nil, action: nil)
backBarButtonItem.accessibilityLabel = self.presentationData.strings.Common_Back
self.navigationItem.backBarButtonItem = backBarButtonItem
self.scrollToTop = { [weak self] in
if let strongSelf = self {
@ -271,7 +280,11 @@ public class ChatListController: TelegramController, KeyShortcutResponder, UIVie
private func updateThemeAndStrings() {
self.tabBarItem.title = self.presentationData.strings.DialogList_Title
self.navigationItem.backBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.DialogList_Title, style: .plain, target: nil, action: nil)
let backBarButtonItem = UIBarButtonItem(title: self.presentationData.strings.DialogList_Title, style: .plain, target: nil, action: nil)
backBarButtonItem.accessibilityLabel = self.presentationData.strings.Common_Back
self.navigationItem.backBarButtonItem = backBarButtonItem
self.searchContentNode?.updateThemeAndPlaceholder(theme: self.presentationData.theme, placeholder: self.presentationData.strings.DialogList_SearchLabel)
var editing = false
self.chatListDisplayNode.chatListNode.updateState { state in
@ -281,12 +294,16 @@ public class ChatListController: TelegramController, KeyShortcutResponder, UIVie
let editItem: UIBarButtonItem
if editing {
editItem = UIBarButtonItem(title: self.presentationData.strings.Common_Done, style: .done, target: self, action: #selector(self.donePressed))
editItem.accessibilityLabel = self.presentationData.strings.Common_Done
} else {
editItem = UIBarButtonItem(title: self.presentationData.strings.Common_Edit, style: .plain, target: self, action: #selector(self.editPressed))
editItem.accessibilityLabel = self.presentationData.strings.Common_Edit
}
if self.groupId == nil {
self.navigationItem.leftBarButtonItem = editItem
self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: PresentationResourcesRootController.navigationComposeIcon(self.presentationData.theme), style: .plain, target: self, action: #selector(self.composePressed))
let rightBarButtonItem = UIBarButtonItem(image: PresentationResourcesRootController.navigationComposeIcon(self.presentationData.theme), style: .plain, target: self, action: #selector(self.composePressed))
rightBarButtonItem.accessibilityLabel = "Compose"
self.navigationItem.rightBarButtonItem = rightBarButtonItem
} else {
self.navigationItem.rightBarButtonItem = editItem
}
@ -764,6 +781,7 @@ public class ChatListController: TelegramController, KeyShortcutResponder, UIVie
@objc func editPressed() {
let editItem = UIBarButtonItem(title: self.presentationData.strings.Common_Done, style: .done, target: self, action: #selector(self.donePressed))
editItem.accessibilityLabel = self.presentationData.strings.Common_Done
if self.groupId == nil {
self.navigationItem.leftBarButtonItem = editItem
} else {
@ -780,6 +798,7 @@ public class ChatListController: TelegramController, KeyShortcutResponder, UIVie
@objc func donePressed() {
let editItem = UIBarButtonItem(title: self.presentationData.strings.Common_Edit, style: .plain, target: self, action: #selector(self.editPressed))
editItem.accessibilityLabel = self.presentationData.strings.Common_Edit
if self.groupId == nil {
self.navigationItem.leftBarButtonItem = editItem
} else {

View File

@ -25,7 +25,8 @@ final class NetworkStatusTitleView: UIView, NavigationBarTitleView, NavigationBa
var title: NetworkStatusTitle = NetworkStatusTitle(text: "", activity: false, hasProxy: false, connectsViaProxy: false, isPasscodeSet: false, isManuallyLocked: false) {
didSet {
if self.title != oldValue {
self.titleNode.attributedText = NSAttributedString(string: title.text, font: Font.bold(17.0), textColor: self.theme.rootController.navigationBar.primaryTextColor)
self.titleNode.attributedText = NSAttributedString(string: self.title.text, font: Font.bold(17.0), textColor: self.theme.rootController.navigationBar.primaryTextColor)
self.accessibilityLabel = self.title.text
self.activityIndicator.isHidden = !self.title.activity
if self.title.connectsViaProxy {
self.proxyNode.status = self.title.activity ? .connecting : .connected
@ -97,6 +98,9 @@ final class NetworkStatusTitleView: UIView, NavigationBarTitleView, NavigationBa
super.init(frame: CGRect())
self.isAccessibilityElement = true
self.accessibilityTraits = UIAccessibilityTraitHeader
self.addSubnode(self.activityIndicator)
self.addSubnode(self.titleNode)
self.addSubnode(self.proxyNode)