mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
Various Voice Over improvements
This commit is contained in:
@@ -42,6 +42,8 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
||||
|
||||
private var actionButtonsNode: ChatMessageActionButtonsNode?
|
||||
|
||||
private let messageAccessibilityArea: AccessibilityAreaNode
|
||||
|
||||
private var highlightedState: Bool = false
|
||||
|
||||
private var currentSwipeToReplyTranslation: CGFloat = 0.0
|
||||
@@ -55,6 +57,7 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
||||
self.placeholderNode = StickerShimmerEffectNode()
|
||||
self.placeholderNode.isUserInteractionEnabled = false
|
||||
self.dateAndStatusNode = ChatMessageDateAndStatusNode()
|
||||
self.messageAccessibilityArea = AccessibilityAreaNode()
|
||||
|
||||
super.init(layerBacked: false)
|
||||
|
||||
@@ -120,6 +123,11 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
||||
self.contextSourceNode.contentNode.addSubnode(self.placeholderNode)
|
||||
self.contextSourceNode.contentNode.addSubnode(self.imageNode)
|
||||
self.contextSourceNode.contentNode.addSubnode(self.dateAndStatusNode)
|
||||
self.addSubnode(self.messageAccessibilityArea)
|
||||
|
||||
self.messageAccessibilityArea.focused = { [weak self] in
|
||||
self?.accessibilityElementDidBecomeFocused()
|
||||
}
|
||||
|
||||
self.dateAndStatusNode.openReactions = { [weak self] in
|
||||
guard let strongSelf = self, let item = strongSelf.item else {
|
||||
@@ -238,6 +246,37 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
||||
}
|
||||
}
|
||||
|
||||
override func updateAccessibilityData(_ accessibilityData: ChatMessageAccessibilityData) {
|
||||
super.updateAccessibilityData(accessibilityData)
|
||||
|
||||
self.messageAccessibilityArea.accessibilityLabel = accessibilityData.label
|
||||
self.messageAccessibilityArea.accessibilityValue = accessibilityData.value
|
||||
self.messageAccessibilityArea.accessibilityHint = accessibilityData.hint
|
||||
self.messageAccessibilityArea.accessibilityTraits = accessibilityData.traits
|
||||
if let customActions = accessibilityData.customActions {
|
||||
self.messageAccessibilityArea.accessibilityCustomActions = customActions.map({ action -> UIAccessibilityCustomAction in
|
||||
return ChatMessageAccessibilityCustomAction(name: action.name, target: self, selector: #selector(self.performLocalAccessibilityCustomAction(_:)), action: action.action)
|
||||
})
|
||||
} else {
|
||||
self.messageAccessibilityArea.accessibilityCustomActions = nil
|
||||
}
|
||||
}
|
||||
|
||||
@objc private func performLocalAccessibilityCustomAction(_ action: UIAccessibilityCustomAction) {
|
||||
if let action = action as? ChatMessageAccessibilityCustomAction {
|
||||
switch action.action {
|
||||
case .reply:
|
||||
if let item = self.item {
|
||||
item.controllerInteraction.setupReply(item.message.id)
|
||||
}
|
||||
case .options:
|
||||
if let item = self.item {
|
||||
item.controllerInteraction.openMessageContextMenu(item.message, false, self, self.imageNode.frame, nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override func asyncLayout() -> (_ item: ChatMessageItem, _ params: ListViewItemLayoutParams, _ mergedTop: ChatMessageMerge, _ mergedBottom: ChatMessageMerge, _ dateHeaderAtBottom: Bool) -> (ListViewItemNodeLayout, (ListViewItemUpdateAnimation, Bool) -> Void) {
|
||||
let displaySize = CGSize(width: 184.0, height: 184.0)
|
||||
let telegramFile = self.telegramFile
|
||||
@@ -254,6 +293,8 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
||||
let currentItem = self.item
|
||||
|
||||
return { item, params, mergedTop, mergedBottom, dateHeaderAtBottom in
|
||||
let accessibilityData = ChatMessageAccessibilityData(item: item, isSelected: nil)
|
||||
|
||||
let layoutConstants = chatMessageItemLayoutConstants(layoutConstants, params: params, presentationData: item.presentationData)
|
||||
let incoming = item.message.effectivelyIncoming(item.context.account.peerId)
|
||||
var imageSize: CGSize = CGSize(width: 100.0, height: 100.0)
|
||||
@@ -598,6 +639,8 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
||||
transition = .animated(duration: duration, curve: .spring)
|
||||
}
|
||||
|
||||
strongSelf.updateAccessibilityData(accessibilityData)
|
||||
|
||||
transition.updateFrame(node: strongSelf.imageNode, frame: updatedImageFrame)
|
||||
imageApply()
|
||||
|
||||
@@ -610,6 +653,7 @@ class ChatMessageStickerItemNode: ChatMessageItemView {
|
||||
strongSelf.placeholderNode.frame = placeholderFrame
|
||||
}
|
||||
|
||||
strongSelf.messageAccessibilityArea.frame = CGRect(origin: CGPoint(), size: layoutSize)
|
||||
strongSelf.containerNode.frame = CGRect(origin: CGPoint(), size: layoutSize)
|
||||
strongSelf.contextSourceNode.frame = CGRect(origin: CGPoint(), size: layoutSize)
|
||||
strongSelf.contextSourceNode.contentNode.frame = CGRect(origin: CGPoint(), size: layoutSize)
|
||||
|
||||
Reference in New Issue
Block a user