iPad OS 是否可以检测键盘是否处于浮动模式?
Is is possible on iPad OS to detect if the keyboard is in floating mode?
我们 运行 遇到了 iOS/iPadOS
上的一个特定错误,该错误似乎是在 iPad 显示浮动(iphone 类)键盘时触发的屏幕(而不是固定屏幕)
我们的问题特定于 React Native 和 KeyboardAvoidingView
组件。当组件渲染和键盘浮动时,KeyboardAvoidingView
完全错误地计算了键盘所需的高度,而是隐藏了大约 95% 的屏幕高度。
KeyboardAvoidingView
本身似乎没有办法检测浮动键盘是否打开。
是否有特定的 API 可以用来检测此键盘模式,以便我们可以关闭它的 KeyboardAvoidingView
?
键盘事件(keyboardWillShow
、keyboardDidShow
等)似乎return 没有任何具体线索。
没有这样的模式enum/indicator(至少现在是这样),但是有键盘框架信息
public class let keyboardFrameBeginUserInfoKey: String // NSValue of CGRect
public class let keyboardFrameEndUserInfoKey: String // NSValue of CGRect
在相应的键盘通知中
public class let keyboardWillShowNotification: NSNotification.Name
public class let keyboardDidShowNotification: NSNotification.Name
public class let keyboardWillHideNotification: NSNotification.Name
public class let keyboardDidHideNotification: NSNotification.Name
public class let keyboardWillChangeFrameNotification: NSNotification.Name
public class let keyboardDidChangeFrameNotification: NSNotification.Name
相对于屏幕边界
UIScreen.main.bounds
可以检测键盘边框是否在屏幕底部边缘或浮动。
从示意图上看就像
keyboardAttached = NSMaxX(screenBounds) == NSMaxX(keyboardFrame) &&
NSMaxY(screenBounds) == NSMaxY(keyboardFrame) &&
NSWidth(screenBounds) == NSWidth(keyboardFrame)
我宁愿检查一下键盘的宽度。
当键盘的框架宽度等于屏幕的边界宽度时,则表示键盘未处于浮动模式。
我们 运行 遇到了 iOS/iPadOS
上的一个特定错误,该错误似乎是在 iPad 显示浮动(iphone 类)键盘时触发的屏幕(而不是固定屏幕)
我们的问题特定于 React Native 和 KeyboardAvoidingView
组件。当组件渲染和键盘浮动时,KeyboardAvoidingView
完全错误地计算了键盘所需的高度,而是隐藏了大约 95% 的屏幕高度。
KeyboardAvoidingView
本身似乎没有办法检测浮动键盘是否打开。
是否有特定的 API 可以用来检测此键盘模式,以便我们可以关闭它的 KeyboardAvoidingView
?
键盘事件(keyboardWillShow
、keyboardDidShow
等)似乎return 没有任何具体线索。
没有这样的模式enum/indicator(至少现在是这样),但是有键盘框架信息
public class let keyboardFrameBeginUserInfoKey: String // NSValue of CGRect public class let keyboardFrameEndUserInfoKey: String // NSValue of CGRect
在相应的键盘通知中
public class let keyboardWillShowNotification: NSNotification.Name public class let keyboardDidShowNotification: NSNotification.Name public class let keyboardWillHideNotification: NSNotification.Name public class let keyboardDidHideNotification: NSNotification.Name public class let keyboardWillChangeFrameNotification: NSNotification.Name public class let keyboardDidChangeFrameNotification: NSNotification.Name
相对于屏幕边界
UIScreen.main.bounds
可以检测键盘边框是否在屏幕底部边缘或浮动。
从示意图上看就像
keyboardAttached = NSMaxX(screenBounds) == NSMaxX(keyboardFrame) &&
NSMaxY(screenBounds) == NSMaxY(keyboardFrame) &&
NSWidth(screenBounds) == NSWidth(keyboardFrame)
我宁愿检查一下键盘的宽度。
当键盘的框架宽度等于屏幕的边界宽度时,则表示键盘未处于浮动模式。