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

Posted

技术标签:

【中文标题】滚动到滚动视图/滚动视图中的特定文本字段 当键盘在屏幕上时停止滚动【英文标题】:scroll to a specific textfield in a scrollview/scrollview stop scrolling when keyboard is on screen 【发布时间】:2010-01-01 05:20:57 【问题描述】:

我被困在这里了,

我在视图中有一个自定义滚动视图,此滚动视图有一个添加字段按钮,可让用户将新文本字段添加到滚动视图。当用户点击特定的文本字段键盘出现并隐藏文本字段时,为了克服这个问题,我遵循了 UICatalog 示例,但它将整个滚动视图向上移动

为了防止这种情况,我按照 UICatalog 示例进行了操作

-(void)textFieldDidBeginEditing:(UITextField *)sender


if (sender.frame.origin.y>109) 
    moveScrollViewUpBy=(sender.frame.origin.y-109+10);

    [self viewMovedUp:YES];




-(void)viewMovedUp:(BOOL)movedUp

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];

CGRect rect = formScrollView.frame;
if (movedUp)

    if(rect.origin.y == 0.0f)
        rect.origin.y -= kOFFSET_FOR_KEYBOARD;
        rect.size.height += kOFFSET_FOR_KEYBOARD;
    

else

    if(rect.origin.y != 0.0f)
        rect.origin.y += kOFFSET_FOR_KEYBOARD;
        rect.size.height -= kOFFSET_FOR_KEYBOARD;
    

self.formScrollView = rect;


[UIView commitAnimations];

这里

#define kOFFSET_FOR_KEYBOARD    160.0

但这会使滚动视图向上移动,

我希望当我在滚动视图中点击下方的文本字段时...滚动视图滚动并且该文本字段出现....

是否可以这样做....否则建议我一些其他解决方案

我还有一个查询 srollview 只是在键盘停留在屏幕上时停止滚动。有什么办法可以克服这个

【问题讨论】:

【参考方案1】:

您可能只想设置 scrollView 的 contentOffset 属性,而不是调整其边界。

【讨论】:

谢谢支持让我试试看【参考方案2】:

实现 UITextViewDelegate 并执行以下操作:

- (void)textViewDidBeginEditing:(UITextView *)textView 

    keyboardShowing = YES; //helper ivar
    [self sizeToOrientation];
    [self.scrollView scrollRectToVisible:textView.frame animated:YES];


- (void)textFieldDidEndEditing:(UITextField *)textField 
    keyboardShowing = NO;
    [self sizeToOrientation];

辅助方法:

//fit to the appropriate view sizes
- (void)sizeToOrientation 
    CGSize size;
    if( keyboardShowing )
        size = CGSizeMake(320, 190); //make room for keyboard
    else
        size = CGSizeMake(320, 420); //full height with tabbar on bottom

    self.scrollView.frame = CGRectMake(0, 0, size.width, size.height);

这对我很有效。

【讨论】:

有更正确的方法可以做到这一点。 sizeToOrientation 方法需要替换为键盘通知。我稍后会更新我的答案。

以上是关于滚动到滚动视图/滚动视图中的特定文本字段 当键盘在屏幕上时停止滚动的主要内容,如果未能解决你的问题,请参考以下文章

当键盘中的“下一步”返回按钮时滚动带有文本字段的表格视图

当键盘出现滚动视图时文本字段消失

滚动视图 iPhone 内的文本字段

tableview 中的两个 TextFields,都在滚动视图上,当键盘出现 iPhone 时消失

表格视图仅滚动到文本字段底部边缘

如何在 UIView 中设置滚动视图以向上滑动被键盘隐藏的文本字段?