键盘激活时滚动

时间:2013-07-13 10:00:16

标签: iphone ios objective-c uiscrollview scroll

我有一个应用程序,你有文本字段和一个textview但是当我拿到键盘它隐藏了较低的文本字段。我该怎么做。

我试过了:

的.m:

- (void)textFieldDidBeginEditing:(UITextField *)sender {
    CGSize content = _scrollView.contentSize;
    _scrollView.contentSize = CGSizeMake(content.width, content.height + 200);
    svos = _scrollView.contentOffset;
    CGPoint pt;
    CGRect rc = [sender bounds];
    rc = [sender convertRect:rc toView:_scrollView];
    pt = rc.origin;
    pt.x = 0;
    pt.y -= 200;
    [_scrollView setContentOffset:pt animated:YES];
}

- (IBAction)textFieldShouldReturn:(UITextField *)textField {
    CGSize content = _scrollView.contentSize;
    _scrollView.contentSize = CGSizeMake(content.width, content.height - 200);
    [_scrollView setContentOffset:svos animated:YES];
    [textField resignFirstResponder];
}

·H:

CGPoint svos;

虽然底部文本字段仍然隐藏,但它会滚动到可见的

3 个答案:

答案 0 :(得分:0)

您已获取发件人文本字段的来源但仅向上移动60,因此,键盘覆盖了较低的文本字段。您需要知道键盘的高度并计算向上移动的距离。检查this。它有很多答案,所以我不会再解释了。

要滚动到滚动视图内的底部文本字段,请在textFieldDidBeginEditing中添加以下行:

CGSize content = _scrollview.contentSize;
_scrollview.contentSize = CGSizeMake(content.width, content.height + 200);

这将以编程方式扩展您的contentSize,以便您可以滚动到最后一个文本字段并允许键盘覆盖空白区域。

在textFieldDidEndEditing或textFieldShouldReturn中,在您的情况下,添加以下内容:

CGSize content = _scrollview.contentSize;
_scrollview.contentSize = CGSizeMake(content.width, content.height - 200);

我使用任意200作为例子。你需要弄清楚你想要多少。

答案 1 :(得分:0)

用于在iOS中移动文本字段而不受键盘影响的插入式通用解决方案

https://github.com/michaeltyson/TPKeyboardAvoiding

它对我来说很完美。

您只需要在项目中复制所需的类(TPKeyboardAvoidingScrollView或TPKeyboardAvoidingTableView),并在界面构建器文件中将UIScrollView类更改为TPKeyboardAvoidingScrollView或UITableView更改为TPKeyboardAvoidingTableView,其余的内容将由这些类处理。 / p>

enter image description here

答案 2 :(得分:0)

您是否看过有关管理键盘的文档? (apple documentation)有一个我认为你正在做的事情的例子。希望它有所帮助。