es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Swift tvOS – Vista del Accesorio de Trailing en el Foco de la Barra de Pestañas.

La barra de pestañas tiene una trailingAccessoryView que la documentación indica que se puede usar para algunas acciones del usuario. Sin embargo, aunque puedo colocar una vista dentro de esta vista accesorio, no recibe el enfoque en ningún momento. ¿Existe algún medio para permitir que esta vista reciba el enfoque al deslizar hacia la derecha desde la barra de pestañas?

let symbolConfig = UIImage.SymbolConfiguration(pointSize: 30, weight: .bold, scale: .large)
        let guideButton = UIButton()
        guideButton.setImage(UIImage(systemName: "list.bullet", withConfiguration: symbolConfig), for: .normal)
        guideButton.addTarget(self, action: #selector(test), for: .primaryActionTriggered)
        guideButton.translatesAutoresizingMaskIntoConstraints = false
        tabBar.trailingAccessoryView.addSubview(guideButton)
        guideButton.topAnchor.constraint(equalTo: tabBar.trailingAccessoryView.topAnchor).isActive = true
        guideButton.trailingAnchor.constraint(equalTo: tabBar.trailingAccessoryView.trailingAnchor, constant: 0).isActive = true

Como nota, he intentado establecer: tabBar.trailingAccessoryView.isUserInteractionEnabled = true sin ningún efecto.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que simplemente establecer tabBar.trailingAccessoryView.isUserInteractionEnabled = true no permite que la vista dentro de trailingAccessoryView reciba el enfoque al deslizar hacia la derecha desde la barra de pestañas.

    Una solución alternativa para esto es crear una subclase de UITabBar y anular el método accessibilityScroll(_:) para enfocar manualmente la vista dentro de trailingAccessoryView. Aquí tienes un ejemplo de implementación:

    class MyTabBar: UITabBar {
        override func accessibilityScroll(_ direction: UIAccessibilityScrollDirection) -> Bool {
            // Comprobar si estamos deslizando hacia la derecha y si hay una vista en el "trailing accessory view"
            if direction == .right && let trailingView = trailingAccessoryView?.subviews.first {
                // Establecer el enfoque en la vista
                trailingView.accessibilityActivate()
                return true
            }
    
            // Llamar a la implementación superior para otras direcciones o si no hay una vista en el "trailing accessory view"
            return super.accessibilityScroll(direction)
        }
    }
    

    Luego, puedes utilizar esta subclase personalizada MyTabBar en lugar de la UITabBar predeterminada en tu aplicación.

    Ten en cuenta que cambiar manualmente el comportamiento de accesibilidad de un control estándar como UITabBar debe hacerse con cuidado y consideración por la experiencia del usuario. Es mejor adherirse a las pautas de accesibilidad de iOS siempre que sea posible.

Comments are closed.