自定义tableViewCell中textField resignFirstResponder后的tableView frame.origin问题
Posted
技术标签:
【中文标题】自定义tableViewCell中textField resignFirstResponder后的tableView frame.origin问题【英文标题】:tableView frame.origin problem after textField resignFirstResponder in custom tableViewCell 【发布时间】:2009-08-20 22:08:07 【问题描述】:我正在使用带有自定义单元格的 tableView。当我想使用 navigationController 的 pushViewController 函数显示另一个视图时,我会遍历文本字段并在它们上调用 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 的来源出现了一些奇怪的问题。我尝试将它的 superviews origin 设置为 0,但这没有帮助。
这里是问题的截图:link
如您所见,我的tableview太大,滚动条到达底部时卡在视图中间。
对不起我的英语,希望你能理解我,
提前致谢!
汉斯
【问题讨论】:
【参考方案1】:其实很简单。只需将您的 resignFirstResponder 放入 -viewWillDisappear
编辑:这更好,更少hacky,我将它添加到我的课程中,并且它有效:
edit 2:使用之前的代码时,您的应用似乎会被拒绝。这是一个更新的公共 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)
【讨论】:
某人的应用因使用此方法而被应用商店拒绝。如果你有兴趣,它在这个线程中。 ***.com/questions/1823317/…【参考方案2】:我会解决您的其他问题。我想当你说当其他文本字段在屏幕上时你不能调用“resignFirstResponder”时,你的意思是发生了崩溃?
如果是这样,那是因为屏幕单元格不存在,因此文本字段也消失了。它们被回收(因此它们可以出列以获取新单元格)。
简单的解决方案是仅在屏幕上的文本字段上调用 resignFirstResponder。
你现在做的事情看起来有点老套。
【讨论】:
问题是我的tableView在底部的时候,没有显示textField,但是还是显示了键盘。当文本字段即将离开屏幕时,有没有办法退出键盘?以上是关于自定义tableViewCell中textField resignFirstResponder后的tableView frame.origin问题的主要内容,如果未能解决你的问题,请参考以下文章
在自定义 tableviewcell 中更改 UIImage
无法在自定义 TableViewCell 中编辑 UITextView
在自定义 TableViewCell 中动态更改 UILabel 框架