gpt4 book ai didi

iPhone - 当键盘已经显示时知道键盘尺寸

转载 作者:行者123 更新时间:2023-12-03 18:33:12 27 4
gpt4 key购买 nike

好的,我知道我可以使用通知 UIKeyboardWillShowNotification 读取键盘大小

keybSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

但这只有在键盘显示时才可用。

但问题是这样的:当键盘可见且 iPhone 旋转时,我有一个窗口必须将自身调整到新位置。当我旋转 iPhone 时,两个委托(delegate)方法 willRotateToInterfaceOrientationdidRotateFromInterfaceOrientation 都会运行并处理旋转。在这些方法中,我需要知道当前的键盘高度,以便我可以正确定位 View 。问题是由 UIKeyboardWillShowNotification 通知触发的方法在委托(delegate)方法处理旋转之后运行。

方法运行的顺序是:

  1. willRotateToInterfaceOrientation
  2. didRotateFromInterfaceOrientation
  3. UIKeyboardWillShowNotification 方法

也就是说,键盘高度只是在最后读取,这意味着方法1和2都将使用旧的键盘高度。

我的问题是:有没有办法直接读取可见键盘的键盘高度,而不是依赖通知触发的方法?

谢谢

最佳答案

变体 1

您可以使用此代码片段来探索 View 层次结构:

- (void)printSubviews:(UIView *)aView {
NSLog(@"%@ - %@", [aView class], NSStringFromCGRect([aView frame]));
for (UIView *view in [aView subviews]) {
[self printSubviews:view];
}
}


- (void)printAllViews {
for (UIWindow *window in [[UIApplication sharedApplication] windows]) {
[self printSubviews:window];
}
}

您会发现,根据获得的值很容易算出键盘尺寸。

变体 2

或者,您可以导入UIKeyboard.h(您可以在互联网上找到它)。它包括一种获取各种界面方向的默认键盘大小的方法。但是,这将使用私有(private) API,因此您可能需要小心。

关于iPhone - 当键盘已经显示时知道键盘尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5463485/

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