gpt4 book ai didi

cocoa-touch - UI 附件元素、附件框架和屏幕旋转损坏

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:57:41 25 4
gpt4 key购买 nike

我有一个 UIControl 子类,它遵循 UIAccessibilityContainer 非正式协议(protocol):它返回 NO 到 -isAccessibilityElement,在访问器中提供正确的 -accessibilityElementCount 和元素。

为表示无障碍区域而创建的每个 UIAccessibilityElement 都已成功创建,并且框架是我正在绘制的另一个 CGRect 的 1:1 映射。

例如,我正在绘制 {94, 99}, {209, 350}} 并且 UIAccessibilityElement 上的 -accessibilityFrame 设置为相同的 CGRect 值。

但是,当处于横向(或上下颠倒的纵向)方向时,框架(仅适用于辅助功能元素,绘图仍然可以正常工作)旋转不正确。相对于框架的左上角始终是主页按钮的左上角。

这是模拟器的截图:

Screenshot

如您所见,它处于横向模式,并且框架完全不可能不是它指定的内容。

这是驱动元素创建的代码:

CGRect localRect = someCGRectVariable;
CGRect globalRect = CGRectOffset(localRect, CGRectGetMinX(self.accessibilityFrame), CGRectGetMinY(self.accessibilityFrame));

UIAccessibilityElement *accElem = [[UIAccessibilityElement alloc]initWithAccessibilityContainer:self];

accElem.isAccessibilityElement = YES;
accElem.accessibilityFrame = globalRect;
accElem.accessibilityHint = [NSString stringWithFormat:NSLocalizedString(@"xyz %@", nil), someName];
accElem.accessibilityTraits = UIAccessibilityTraitButton;
accElem.accessibilityLabel = nameValue;

在我看来,轮换被破坏了,但我无法确定。值得注意的是,它在纵向模式下工作得非常好。

最佳答案

accessibilityFrame 在屏幕坐标中返回其答案,而不针对设备旋转进行调整。

Apple 文档中某处建议您在这种情况下使用 [UIWindow convertRect:toWindow:]。

关于cocoa-touch - UI 附件元素、附件框架和屏幕旋转损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4511195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com