gpt4 book ai didi

ios7 - iOS - 方向更改后隐藏的附件变得可见

转载 作者:行者123 更新时间:2023-12-04 23:50:33 24 4
gpt4 key购买 nike

就我而言,我使用的是 UITextField作为我不需要一直展示的配件。我已确认更改发生在方向通知事件触发后。我想一个技巧是将配件的大小调整为零高度,但我不愿这样做。

想知道是否有人遇到过这个问题并找到了解决方案?

已输入错误报告并提供示例项目。对于具有更高权限的用户,可以在 bugreport.apple.com 上搜索 ID 16771757。我还将它复制到一个 Dropbox 帐户,可访问为 https://www.dropbox.com/s/o28vo04ig3yhgz6/ID16771757.zip。 .

感谢您的阅读。

最佳答案

iOS 为输入附件 View 实例调用此类方法:

  • [inputAccessoryView setAlpha:1];当附件 View 的所有者成为第一响应者时(内部方法调用 -[UIPeripheralHost(UIKitInternal) executeTransition:] );
  • [inputAccessoryView setHidden:NO];当界面旋转完成时(内部方法调用 -[UIPeripheralHost finishRotationOfKeyboard:] );

  • 这就是为什么您的输入附件 View 在界面旋转事件后变得可见的原因。

    解决方案取决于您期望的行为:
    让我们想象一下 input accessory view height = 44 ->
    现在您隐藏输入附件 View 并将所有者设置为第一响应者:
    如果您期待 inputAccessoryView.frame.size.height equals 0然后隐藏输入附件 View 的解决方案将其设置为零: inputAccessoryView = nil ;

    如果您期待 inputAccessoryView.frame.size.height equals 44那么隐藏输入附件 View 的解决方案是覆盖 setHidden:它的方法:
    - (void)setHidden:(BOOL)hidden {
    [super setHidden:self.customIsHiddenFlag];
    }

    在哪里 customIsHiddenFlag您需要用于实现显示/隐藏附件 View 的逻辑的属性;

    或覆盖 setAlpha:方法:
    - (void)setAlpha:(CGFloat)alpha {
    [super setAlpha:(self.customIsHiddenFlag ? 0 : 1)];
    }

    这些解决方案适用于 iOS 7。

    对于 iOS 6,您可以使用基本解决方案 inputAccessoryView.hidden = YES它有效,因为 iOS 不调用 setHidden:NO触发界面旋转时自动执行。

    看来您是对的,这是导致 iOS6 和 iOS7 行为不同的错误原因。如果 Apple 想要强制显示输入附件 View ,那么他们应该调用 setHidden:NO不仅在界面旋转之后,而且在所有者成为第一响应者时。

    关于ios7 - iOS - 方向更改后隐藏的附件变得可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23338423/

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