gpt4 book ai didi

iphone - 自定义tableViewCell中textField resignFirstResponder后的tableViewframe.origin问题

转载 作者:行者123 更新时间:2023-12-03 21:13:20 24 4
gpt4 key购买 nike

我正在使用带有自定义单元格的 tableView。当我想使用 navigationController 的 pushViewController 函数显示另一个 View 时,我循环遍历文本字段并对其调用 resignFirstResponder 。但 resignFirstResponder 仅在显示文本字段时才起作用,因此我首先滚动到页面顶部。这是代码:

NSIndexPath *topIndexPath;
topIndexPath = [[NSIndexPath indexPathWithIndex:0] indexPathByAddingIndex:0];
[self.tableView scrollToRowAtIndexPath:topIndexPath atScrollPosition:UITableViewScrollPositionTop animated:NO];

[[self textFieldForRow:0] resignFirstResponder];
[[self textFieldForRow:1] resignFirstResponder];
[[self textFieldForRow:2] resignFirstResponder];
[[self textFieldForRow:3] resignFirstResponder];

这可行,但在此之后我的 tableView 的起源出现了一些奇怪的问题。我尝试将其 super View 原点设置为 0,但这没有帮助。

这是问题的屏幕截图:link

如您所见,我的桌面 View 太大,滚动条到达底部时卡在 View 中间。

抱歉我的英语不好,希望你能理解我,

提前致谢!

汉斯

最佳答案

其实很简单。只需将您的 resignFirstResponder 放入 -viewWillDisappear

编辑:这更好,更少黑客,我将其添加到我的类(class)中,并且它有效:

编辑2:使用以前的代码时,您的应用程序似乎会被拒绝。这是更新的公共(public) api 版本:

- (void)viewWillDisappear:(BOOL)animated
{
[self.view findAndResignFirstResponder];
}

还有:

@implementation UIView (FindAndResignFirstResponder)
- (BOOL)findAndResignFirstResponder
{
if (self.isFirstResponder) {
[self resignFirstResponder];
return YES;
}
for (UIView *subView in self.subviews) {
if ([subView findAndResignFirstResponder])
return YES;
}
return NO;
}
@end

(来源:Get the current first responder without using a private API)

关于iphone - 自定义tableViewCell中textField resignFirstResponder后的tableViewframe.origin问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1309111/

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