文本字段应该返回自动滚动屏幕

Posted

技术标签:

【中文标题】文本字段应该返回自动滚动屏幕【英文标题】:Textfieldshouldreturn auto scroll screen 【发布时间】:2014-02-17 08:38:10 【问题描述】:

我使用下面的代码。看来我有 5 个 uitextfields。现在由于某种原因,当我单击下一步时,视图实际上自动向下滚动,因此我可以看到我正在用键盘写入数据的文本字段。我以为这是默认设置。

我在 uiview 中添加了很多代码,并添加了一个链接到另一个视图的按钮。不知何故,在这个过程的中间,我的 uiview 失去了它的“下一次按下时自动滚动”机制。我尝试删除我的按钮并弄乱了一点,但找不到问题。

不确定我是否应该发布整个课程。

-(BOOL)textFieldShouldReturn:(UITextField*)textField;

    [textField resignFirstResponder];

    if (textField == self.firstOne) 
        [self.secondOne becomeFirstResponder];
     else if (textField == self.secondOne) 
        [self.thirdOne becomeFirstResponder];
     else if (textField == self.thirdOne) 
        [self.fourthOne becomeFirstResponder];
     else if (textField == self.fourthOne) 
        [self.fifthOne becomeFirstResponder];
    

    return NO; 

我还发现了一些关于如何通过设置坐标以编程方式滚动屏幕的内容。在我看来不是很可行。我希望它是“知道自动向下滚动的位置”的方式。

【问题讨论】:

【参考方案1】:

我发现原因是我在引入新按钮时添加了 viewWillAppear 方法。该代码没有调用 super 方法,因此只需添加 1 行代码即可解决问题

- (void)viewWillAppear:(BOOL)animated 
    [super viewWillAppear:animated];
    // your code

【讨论】:

【参考方案2】:

我希望在 View 中添加 ScrollView,下一步在 UIScrollView 的 SubView 中添加 5 个 TextField,例如

[scrollView addSubView:textField1];

接下来增加和减少set的scrollview内容。比如

- (void)textFieldDidBeginEditing:(UITextField *)textField

       [scrollView setContentOffset:CGPointMake(0, 230) animated:YES];

【讨论】:

以上是关于文本字段应该返回自动滚动屏幕的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 在文本字段开始编辑时自动滚动

输入文本时自动扩展的 Flutter 文本字段,然后在达到特定高度时开始滚动文本

如何以任何文本长度自动水平滚动文本视图?

滚动到滚动视图/滚动视图中的特定文本字段 当键盘在屏幕上时停止滚动

当虚拟键盘出现在本机反应中时如何自动向上滚动屏幕(在android上)

如何使用自动布局约束在单个屏幕中放置两个视图