>source

제목 상태와 마찬가지로 프로그래밍 방식으로접근성 식별자UITabBar의 버튼은? 현재 설정하려고 합니다.UITabBarItem'에스접근성 식별자탭 표시 줄에 추가하기 전에 버튼으로 전달되지 않는 것 같습니다.

설정은 어떻게 하나요?접근성 식별자페이지에 표시되는 실제 버튼에?

UITabBarItem은 UIAccessibilityIdentification 프로토콜을 구현합니다. 문제가 발생하면 Apple에 버그 보고서를 열고 사람들이 복제할 수 있도록 여기에 번호를 게시하십시오.

Léo Natan2022-01-03 21:23:36
  • 답변 # 1

    탭바 항목재산은 상속인이 아닙니다.UIView. 에 의해서만 사용됩니다.UITabBar컨트롤러클래스에 자식 탭을 추가할 때. 후탭바 컨트롤러탭을 로드하고 초기화한 경우 탭의 값을 변경하는 것은 쓸모가 없습니다.탭바 항목재산. 따라서 의 값을 정확히 어디에 설정하는지가 매우 중요합니다.tabBarItem.accessibilityIdentifier.

    유일한 작동 방법은 아래 예와 같이 컨트롤러 이니셜라이저에서 값을 설정하는 것입니다.

    class ViewController: UIViewController {
       init() {
          super.init(nibName: nil, bundle: nil)
          self.tabBarItem.accessibilityIdentifier= "myTabIdentifier"
       }
    }
    

    이 속성의 값을 다른 곳에서 설정하는 경우(예:보기DidLoad방법) 그런 다음UITabBar컨트롤러그것에 대해 결코 알지 못할 것입니다. 왜냐하면보기DidLoad메소드는 다음에 호출됩니다.탭바 컨트롤러은(는) 탭을 초기화했습니다.

    또는 위의 솔루션이 적합하지 않은 경우 다음과 같이 탭 인덱스를 사용하여 탭과 상호 작용할 수 있습니다.

    let app= XCUIApplication()
    app.tabBars.buttons.element(boundBy: tabIndex).tap()
    

  • 답변 # 2

    같은 문제가 발생했을 때 기본 UITabBarButton에 식별자를 설정하게 되었습니다(애플이 이에 대해 반대할지 여부는 확실하지 않습니다.) 먼저 UITabBarItem 및 해당 식별자로 UITabbar를 설정한 다음 다음을 수행해야 합니다.

    //Set the tabbar items and their identifiers first, then, copy them on the underlying UITabBarButton using this code
    int index= 0;
    for (UIControl *control in controller.tabBar.subviews)
    {
        if ([control isKindOfClass:UIControl.class] &
    &
     index < tabBarController.tabBar.items.count)
        {
            control.accessibilityIdentifier= controller.tabBar.items[index].accessibilityIdentifier;
            index++;
        }
    }
    

  • 답변 # 3

    UI 테스트의 경우 뷰 컨트롤러에서 다음과 같이 수행합니다.

    self.tabBarItem.accessibilityIdentifier= @"NewRecordTab";
    

    Swift에서는

    self.tabBarItem.accessibilityIdentifier= "NewRecordTab"
    

    어떤 이유로 탭의 루트 보기 컨트롤러에서 탭 표시줄 항목을 설정할 때 ui 테스트에서 이 식별자를 볼 수 없습니다.

    Андрей Первушин2022-01-04 01:14:00

    나에게도 작동하지 않습니다. UITabBarItem은 실제로 화면에 표시되는 것이 아니므로 버튼에 표시되는 정보의 컨테이너일 뿐입니다.

    Marc-Alexandre Bérubé2022-01-04 04:21:12
  • 이전 vue.js : 드롭다운 목록의 항목 표시를 어떻게 수정합니까?
  • 다음 python : 팬더 데이터 프레임에서 열 복제