gpt4 book ai didi

ios - 当 UITableView 中滚动不够快时,UITextField 放弃第一响应者

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

我有一个 uitableview,其中每个单元格都有一个 uitextfield。如果我触摸 TableView 中下方的文本字段,则会将该文本字段设置为第一响应者并滚动到它,并且还会向上滚动键盘(全部按预期)。但是,如果键盘动画比表格 View 滚动速度快,则键盘会暂时覆盖文本字段,从而导致文本字段不再作为第一响应者。

很难用基本项目或我可以粘贴到此处的任何代码片段来重现,因为问题是每个单元格都在进行大量布局,并且在向上滚动等时使其他单元格出列,这意味着滚动相当慢。

我不介意稍微不稳定的滚动,我只是想找到一种方法来确保文本字段保持其自身作为第一响应者,即使它暂时被键盘隐藏。

编辑:

如下面的答案所示,我现在尝试维护 TableView 是否正在滚动,并且仅在滚动=否时允许第一响应者辞职。 UITableViewDelegate 的代码如下,但现在的问题是 TableView 的非动画移动(即scrollToRowAtIndexPath ...animated:NO)导致scrollViewDidScroll,但不是scrollViewDidEndScrollingAnimation。关于如何以一种不那么笨拙的方式解决这个问题有什么想法吗?


- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"YES");
self.scrolling = YES;
}

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSLog(@"NO");
self.scrolling = NO;
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"NO");
self.scrolling = NO;
}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
NSLog(@"NO");
self.scrolling = NO;
}

最佳答案

您可以子类化UITextField并实现

- (BOOL)resignFirstResponder

您可以在滚动时返回NO

关于ios - 当 UITableView 中滚动不够快时,UITextField 放弃第一响应者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17424207/

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