gpt4 book ai didi

ios - 在 iOS 中,如何获取键盘信息以防止键盘覆盖文本字段?

转载 作者:行者123 更新时间:2023-11-29 13:07:57 25 4
gpt4 key购买 nike

我正在设置一个NOTIFICATION 来获取KEYBOARD 信息来调整 View ,这样选定的文本字段就不会被KEYBOARD 覆盖.

@property CGSize keyboard;

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:@"UIKeyboardWillShowNotification"
object:nil];
...
}

- (void) keyboardWillShow:(NSNotification *)note
{
NSDictionary *userInfo = [note userInfo];
self.keyboard = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
}

我已经设置了 UITextFieldDelegate,所以我可以使用 KEYBOARD 中的信息

- (void)textFieldDidBeginEditing:(UITextField *)textField

一切都很完美......

除了第一次。

设置 KEYBOARD 属性的 NOTIFICATIONtextFieldDidBeginEditing 之后被调用,所以第一次 KEYBOARD属性尚未设置,因此显示不正确。

之后一切正常,因为已经设置了 KEYBOARD 属性并且值没有改变。

如何在第一次执行textFieldDidBeginEditing之前获取KEYBOARD信息?

编辑:

确实找到了一些解决方案,它似乎确实有效,但对我来说感觉有点老套,我仍然想知道是否有办法获取键盘信息。

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.txtField becomeFirstResponder];
}

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.txtField resignFirstResponder];
}

在显示和隐藏键盘时确实会在屏幕的最底部短暂闪烁,我不喜欢这一点,但对于不知道寻找它的人来说可能不是很明显或引人注意。

我必须将 becomeFirstResponderresignFirstResponder 分解成不同的方法,因为如果从相同的方法调用它们,则 keyboardWillShow 不会得到打电话。

此外,不能将 becomeFirstResponder 放在 viewDidLoad 中,因为在那种情况下也不会调用 keyboardWillShow

如果有人有改进或更好的方法,我很乐意听到。

最佳答案

您可以这样做的一种方法是,而不是在开始编辑时设置文本字段的框架,您可以遍历检查 isFirstResponder 属性的文本字段,然后移动那个文本字段的框架是第一响应者。您可以在获取键盘框架的方法中完成所有这些操作。

关于ios - 在 iOS 中,如何获取键盘信息以防止键盘覆盖文本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18143457/

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