如何获得iOS 8.3表情符号键盘高度?

我可以处理两个事件:键盘显示键盘隐藏时.
iOS 8.2及以上版本都能正常运行.

但是当您更改键盘语言时如何处理事件?当您将英文键盘更改为表情符号键盘时,表情符号键盘(在ios 8.3中)的高度较大,会隐藏内容.

或者也许你有一个解决方案如何控制iOS 8.3表情符号键盘高度?

解决方法

好.所以看看我的旧代码,我记得,我不使用2个观察者(UIKeyboardDidShowNotification / UIKeyboardDidHideNotification).我使用单个观察者(UIKeyboardWillChangeFrameNotification),这是每个事件触发:键盘隐藏,键盘显示,键盘更改帧.

在我的情况下,文本框和发送按钮嵌套在UIView中,这是在UIViewController的视图中添加的视图,高于一切.

我在viewDidAppear中添加观察者,并删除viewWilldisappear中的观察者(以避免在视图不活动时触发任何通知).

以上信息对您的情况是不必要的,只是为了信息加入.相关代码如下:

添加观察者:

- (void) viewDidAppear:(BOOL)animated {

    [super viewDidAppear:animated];

    [[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
}

手柄通知

- (void) keyboardWillChangeFrame:(NSNotification*)notification {

    NSDictionary* notificationInfo = [notification userInfo];

    CGRect keyboardFrame = [[notificationInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

    [UIView animateWithDuration:[[notificationInfo valueForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]
                          delay:0
                        options:[[notificationInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue]
                     animations:^{

                         CGRect frame = self.textViewContainer.frame;
                         frame.origin.y = keyboardFrame.origin.y - frame.size.height;
                         self.textViewContainer.frame = frame;

                     } completion:nil];
}

您可能需要对frame.origin.y …行进行一些调整以进行正确的计算.我不知道你是否有一个UITabBarController或底部的任何酒吧.这里最安全的选择是:

frame.origin.y = self.view.frame.size.height - keyboardFrame.size.height - X;

如果您的VC覆盖整个屏幕,则X为0.如果没有,请使用任何底部的高度.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...