• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - TextField 显示时获取 UIKeyboard 高度

[复制链接]
菜鸟教程小白 发表于 2022-12-12 12:42:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我有几个 UITextFields 在弹出时会被键盘隐藏,所以我实现了 UIKeyboardWillShowNotificationUIKeyboardWillHideNotification 并将它们发送到各自的方法:

- (void)keyboardWillShowNSNotification*)notification
{
    CGFloat height = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
    keyBoardHeight = height;
}

- (void)keyboardWillHideNSNotification*)notification
{
    CGFloat height = [[notification.userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height;
    keyBoardHeight = height;
}

然后我将我的文本字段委托(delegate)给此方法:

//TextFieldDelegate
- (void)textFieldDidBeginEditingUITextField *)textField
{
    float keyboardOffset = [self offsetForKeyboard:textField.frame.origin.y withHeight:textField.frame.size.height];
    NSLog(@"%f, %f", keyBoardHeight, keyboardOffset);

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.1];
    self.view.frame = [Global rect:self.view.frame withNewY:-[self offsetForKeyboard:textField.frame.origin.y withHeight:textField.frame.size.height]];
    [UIView commitAnimations];
}

代码运行正常,但是当我运行代码时,keyboardWillShow: 方法在 textFieldDidBeginEditing: 方法之后运行。正因为如此,代码第一次运行时 keyboardHeight 被设置为 0,所以我计算的偏移量是很远的。

如何使 keyboardWillShow: 方法在 textFieldDidBeginEditing: 方法之前运行?我可以使用其他委托(delegate)方法吗?



Best Answer-推荐答案


抱歉,没有办法。您必须在 在通知观察者内 制作动画或进行键盘处理的任何操作。 这是 Apple 推荐的,并且在我迄今为止遇到的所有情况下都适用。

Apple's Keyboard Guide

关于ios - TextField 显示时获取 UIKeyboard 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26901665/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap