获取键盘的高度

- (void)viewDidLoad
{
    [super viewDidLoad];

    //增加监听,当键盘出现或改变时收出消息
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillShow:)
                                                 name:UIKeyboardWillShowNotification object:nil];//注意获取键盘的高度的监听方法,应写在控制器里,若自定义的cell中,有textfield,在自定义的cell中写入监听的话,点击键盘时,第一次点击时高度获取的为0 ,之后再点击才获取到键盘的高度(至于为什么现在还没想清楚)

    //增加监听,当键退出时收出消息
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(keyboardWillHide:)
                                                 name:UIKeyboardWillHideNotification object:nil];

}
//当键盘出现或改变时调用
- (void)keyboardWillShow:(NSNotification *)aNotification
{
    //获取键盘的高度
    NSDictionary *userInfo = [aNotification userInfo];
    NSValue *aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGRect keyboardRect = [aValue CGRectValue];
    int height = keyboardRect.size.height;
}
//当键退出时调用
- (void)keyboardWillHide:(NSNotification *)aNotification
{

}
在Unity中获取键盘高度,需区分安卓和IOS系统,分别采用不同的方法。 对于安卓系统,可从安卓端获取键盘输入法的高度。有大佬给出的解决方法可参考此链接:https://blog.youkuaiyun.com/AnYuanLzh/article/details/111246475 [^1]。也可在MainActivity里注册listener,示例代码如下: ```java public class MainActivity extends UnityPlayerActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SoftKeyBoardListener.setListener(MainActivity.this, new SoftKeyBoardListener.OnSoftKeyBoardChangeListener() { @Override public void keyBoardShow(int height) { Log.d("lck","show height:"+height); Toast.makeText(MainActivity.this, "键盘显示 高度" + height, Toast.LENGTH_SHORT).show(); } @Override public void keyBoardHide(int height) { Log.d("lck","hide height:"+height); Toast.makeText(MainActivity.this, "键盘隐藏 高度" + height, Toast.LENGTH_SHORT).show(); } }); } } ``` 不过,实际中虚拟键盘有动画,使用`getWindowVisibleDisplayFrame`获取有延迟,需要不断调用`GetKeyboardHeight()`,大概20帧左右,才能获取虚拟键盘高度的变化,但这会导致Android的Java对象反复创建与释放 [^2][^4]。 对于IOS系统,需要去找到对应的API来获取键盘高度 [^3]。 此外,在做手机键盘跟随位置的计算时,若手机屏幕有不用于显示内容的区域(如刘海屏的顶部摄像头区域和底部非交互区域),要考虑这部分偏移量,不然会出现适配位置不精确的现象 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值