У меня была такая же проблема, как и у вас, и я потратил некоторое время на ее решение.Когда вы добавляете представление B к представлению A, вы не скрываете представление A. Представление продолжается там, и, как ожидается от voiceOver, оно будет читать это представление / метку.
Вы можете использовать представление отладки, которое обеспечивает Xcodeдля вас, чтобы увидеть такого рода проблемы.Я написал пример, чтобы продемонстрировать вам, как voiceOver видит ваши ярлыки.
Когда вы используете addSubview, ваша иерархия представлений выглядит так:
![overview](https://i.stack.imgur.com/J1Atb.png)
Так что в этомcase, контейнер, с Hello Stack!ярлык поверх ярлыка Hello World.Как пользователь, вы не можете видеть ярлык Hello World.Однако voiceOver может видеть это представление.
Хорошо, теперь, когда проблема известна, решение заключается в следующем: всякий раз, когда вы хотите добавить представление поверх другого, сначала скрывайте предыдущее представление.Затем используйте Debug View xcode, чтобы увидеть, как выглядят ваши представления.
Я исправлю это, чтобы показать вам, как исправить ошибку, которую я продемонстрировал:
В коде: ![enter image description here](https://i.stack.imgur.com/ocwZV.png)
Отладка:
- первая метка: postimg.org/image/cabhadzrl/
- вторая метка: postimg.org/image/nsldgjb41/5605fbcd/
Если вы наблюдаете, я добавил контейнер представления между метками, но это представление просто для улучшения представления об иерархии.