gpt4 book ai didi

ios - 如何获取 iOS 8.3 表情符号键盘高度?

转载 作者:技术小花猫 更新时间:2023-10-29 10:21:48 25 4
gpt4 key购买 nike

我可以处理两个事件:键盘显示时和键盘隐藏时。在 iOS 8.2 及更早版本中一切正常。

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

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

最佳答案

好的。所以看看我的旧代码,我记得,我使用2个观察者(UIKeyboardDidShowNotification/UIKeyboardDidHideNotification)。我使用单个观察器 (UIKeyboardWillChangeFrameNotification),它在每个事件中触发:键盘隐藏、键盘显示、键盘更改框架。

在我的例子中,文本框和发送按钮嵌套在 UIView 中,这个 View 被添加到 UIViewController view 中,高于一切。

我在 viewDidAppear 中添加观察者并在 viewWillDisappear 中移除观察者。(以避免在 View 未激活时触发任何通知)。

以上信息对于您的情况不是必需的,只是为了提供信息而添加的。相关代码如下:

添加观察者:

- (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。如果不是,请使用任何底栏的高度。

关于ios - 如何获取 iOS 8.3 表情符号键盘高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29926144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com