关于获得键盘高度的问题

随着iOS8第三方输入法的引入,在键盘行为处理上,老是会出现问题,常规的方法为

NSDictionary *userInfo = [notify userInfo];
CGSize kbSize = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
self.keyboardHeight = kbSize.height;
UIKIT_EXTERN NSString *const UIKeyboardFrameBeginUserInfoKey      NS_AVAILABLE_IOS(3_2); // NSValue of CGRect
UIKIT_EXTERN NSString *const UIKeyboardFrameEndUserInfoKey          NS_AVAILABLE_IOS(3_2); // NSValue of CGRect
UIKIT_EXTERN NSString *const UIKeyboardAnimationDurationUserInfoKey NS_AVAILABLE_IOS(3_0); // NSNumber of double
UIKIT_EXTERN NSString *const UIKeyboardAnimationCurveUserInfoKey    NS_AVAILABLE_IOS(3_0); // NSNumber of NSUInteger (UIViewAnimationCurve)

// Like the standard keyboard notifications above, these additional notifications include
// a nil object and begin/end frames of the keyboard in screen coordinates in the userInfo dictionary.
UIKIT_EXTERN NSString *const UIKeyboardWillChangeFrameNotification  NS_AVAILABLE_IOS(5_0);
UIKIT_EXTERN NSString *const UIKeyboardDidChangeFrameNotification   NS_AVAILABLE_IOS(5_0);

在取键盘高度时userInfo使用 UIKeyboardFrameEndUserInfoKey这个Key值,对于一些键盘高度自定义的输入法,使用其他的Key会产生高度错误的现象

在 Android 中,可以通过监听键盘的打开和关闭事件来获取键盘高度。以下是获取键盘高度的步骤: 1. 创建一个 `ViewTreeObserver.OnGlobalLayoutListener` 监听器来监听布局的变化。 2. 获取根布局的视图,然后添加上述监听器。 3. 在 `onGlobalLayout()` 方法中,检查键盘是否打开。如果打开,则获取键盘高度。 以下是示例代码: ``` private int keyboardHeight; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final View rootLayout = findViewById(R.id.root_layout); rootLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect rect = new Rect(); rootLayout.getWindowVisibleDisplayFrame(rect); int screenHeight = rootLayout.getRootView().getHeight(); int keyboardHeight = screenHeight - rect.bottom; if (keyboardHeight > 0) { // 键盘打开 // 保存键盘高度 MainActivity.this.keyboardHeight = keyboardHeight; } else { // 键盘关闭 // 清除键盘高度 MainActivity.this.keyboardHeight = 0; } } }); } ``` 在上述代码中,`root_layout` 是根布局的 ID。在 `onGlobalLayout()` 方法中,首先获取当前窗口的可见区域,然后根据屏幕高度和可见区域的底部位置计算键盘高度。如果键盘高度大于 0,则说明键盘打开,保存键盘高度;否则键盘关闭,清除键盘高度。最后,可以在其他方法中使用 `keyboardHeight` 变量获取键盘高度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值