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

在iOS中,如何获取键盘信息以防止键盘覆盖文本字段?,ios,objective-c,keyboard,notifications,uitextfielddelegate,Ios,Objective C,Keyboard,Notifications,Uitextfielddelegate,我正在设置一个通知以获取键盘信息,从而调整视图,使所选文本字段不被键盘覆盖 @property CGSize keyboard; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. [[NSNotificationCenter defaultCenter] addObserver:self

我正在设置一个通知以获取键盘信息,从而调整视图,使所选文本字段不被键盘覆盖

@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,因此我可以在中使用键盘信息

- (void)textFieldDidBeginEditing:(UITextField *)textField
一切都很完美

除了第一次

设置键盘属性的通知textFieldDidBeginEditing之后调用,因此第一次未设置键盘属性时,它的显示不正确

之后一切正常,因为键盘属性已经设置好,并且值没有改变

在第一次执行文本字段didbeginediting之前,如何获取键盘信息

编辑

确实找到了某种解决方案,而且似乎确实有效,但我觉得有点不舒服,我仍然想知道是否有办法获取键盘信息

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

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self.txtField resignFirstResponder];
}
当屏幕显示和隐藏键盘时,确实会在屏幕的最底部短暂闪烁,我不喜欢,但对于不知道如何查找的人来说,这可能不是很明显或明显

我必须将becomeFirstResponder辞职FirstResponder分为不同的方法,因为如果从同一方法调用它们,则键盘将显示不会被调用

此外,不能将becomeFirstResponder放在视图中,因为在这种情况下也不会调用键盘显示


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

可以这样做的一种方法是,不必在“开始编辑”中设置文本字段的框架,您可以遍历文本字段,检查
isFirstResponder
属性,并移动第一响应者的框架。你可以在你的方法里做到这一切,在那里你可以得到键盘框架

可以这样做的一种方法是,不必在“开始编辑”中设置文本字段的框架,而是通过检查
isFirstResponder
属性来迭代文本字段,并移动作为第一响应者的文本字段的框架。你可以在你的方法里做到这一切,在那里你可以得到键盘框架