gpt4 book ai didi

ios - ScrollView 、键盘、隐藏文本字段和以编程方式绘制的自定义表格单元格

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

我正在尝试在用户点击键盘的“下一步”按钮时调整 ScrollView 。棘手的部分是我以编程方式生成自定义表格单元格。每个单元格都有一个文本字段。它看起来像这样:

https://img.skitch.com/20110520-n8k7cm224mtfdc2wsgpjpmghke.jpg

我尝试关注 Apple's instructions用于从键盘后面移动内容,但我发现它对这个实例不太有效,主要是因为 UIKeyboardDidShowNotification 只被调用一次,而不是每次点击“下一步”按钮时都被调用。

我的解决方案是重新连接 Apple 的示例,使用 UIKeyboardDidShowNotification 存储键盘高度,使用 textFieldDidBeginEditing 处理 ScrollView 调整。

这是我(尝试)调整 ScrollView 的方式:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
activeField = textField;

UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbHeight, 0.0);

scrollView.contentInset = contentInsets;
scrollView.scrollIndicatorInsets = contentInsets;

CGRect aRect = self.view.frame;
aRect.size.height -= kbHeight;

if (!CGRectContainsPoint(aRect, activeField.frame.origin) ) {
CGPoint scrollPoint = CGPointMake(0.0, activeField.frame.origin.y-kbHeight);
[scrollView setContentOffset:scrollPoint animated:YES];
}
}

在此函数中,if block 永远不会触发。我使用了几个 NSLog 语句来发现 activeField 的每个实例都报告相同的来源(尽管在应用程序运行时不共享可见的来源)。

我知道 activeField 变量正在正确更新,因为我已将它转储到日志中,并且每次调用此函数时该字段的标签都不同。

因此,我的问题 - 我认为 - 是:如何以编程方式生成包含文本字段的自定义表格单元格以具有正确的来源?

最佳答案

tableView 是一个 scrollview,我认为您不应该通过将 tableView 包装在 scrollView 中来引入新的复杂性。

要让 TableView 滚动到某个单元格,您可以使用:scrollToRowAtIndexPath:atScrollPosition:animated:

如果键盘隐藏了需要滚动到视线中的底部行,只需降低 tableView 的高度即可。您可以在委托(delegate)调用和通知传递的 userInfo 字典中获取键盘的框架。

关于ios - ScrollView 、键盘、隐藏文本字段和以编程方式绘制的自定义表格单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6068152/

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