gpt4 book ai didi

ios - 如何将 TableView 单元格滚动到屏幕键盘之外?

转载 作者:行者123 更新时间:2023-11-29 11:22:18 24 4
gpt4 key购买 nike

这一定是个常见问题...我在表格单元格内有一个 UITextField,我想让用户编辑它。但是,当键盘出现时,它通常会遮挡文本字段。

我试过使用 scrollToRowAtIndexPath:atScrollPosition,但令人惊讶的是这不起作用。我试过将 UITableViewScrollPosition 设置为 {None,Top,Button,Middle}

我想念的滚动秘诀是什么?

谢谢。

最佳答案

秘诀在于您必须手动实现该行为,这很痛苦。

您必须采取几个步骤:

第 1 步:注册键盘通知

- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil];

}

第 2 步:调整键盘出现时插入的内容

- (void)keyboardWasShown:(NSNotification *)notification {
NSDictionary* info = [notification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;

UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0f, 0.0f, kbSize.height, 0.0f);
self.tableview.contentInset = contentInsets;
self.tableview.scrollIndicatorInsets = contentInsets;

[self.scrollView scrollRectToVisible:self.selectedView.frame animated:YES];
}

这假设您的类中有一个名为“selectedView”的属性。还有其他方法可以做到这一点,但最主要的是您需要以某种方式知道用户需要查看哪个 View 。

第 3 步:当键盘消失时重置您的表格 View

- (void)keyboardWillBeHidden:(NSNotification *)notification {
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
self.tableview.contentInset = contentInsets;
self.tableview.scrollIndicatorInsets = contentInsets;
}

第 4 步:注销通知

- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidHideNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardDidShowNotification object:nil];
}

关于ios - 如何将 TableView 单元格滚动到屏幕键盘之外?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396860/

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