5

我有UIPopover一个UIScrollView里面有一个UITextView,底部包含一个。当键盘显示时,弹出框会随着文本视图开始被编辑而调整大小。我希望下面的代码确保文本视图可见:

- (void)textViewDidBeginEditing:(UITextView *)textView {

    CGRect visRect = textView.frame;
    [self.scrollView scrollRectToVisible:visRect animated:NO];

}

问题是代码不会使整个文本视图可见。相反,只显示光标底部的文本视图,如下所示:

在此处输入图像描述

如何显示整个文本视图/将滚动视图滚动到底部?我试过这个:

CGPoint bottomOffset = CGPointMake(0, self.scrollView.contentSize.height - self.scrollView.bounds.size.height);
[self.scrollView setContentOffset:bottomOffset animated:YES];

this answer中所述,但没有任何效果。

此外,我的滚动视图在键盘移动到位后滚动到显示的位置。理想情况下,我希望滚动发生在键盘移动之前或期间。

任何帮助都会很棒。

4

2 回答 2

1

@嘿戴夫

默认情况下UIPopOverController,每当我们过去UIPopOverControler显示任何内容PopUpView时,假设PopUpView高度尽可能大,KeyBoard然后在这种情况下PopOverView 自动获取收缩本身。当您辞职键盘时,PopUpView 将自动扩展自身。我也面临同样的问题案子。

这只是我的观点,您可以更改CurrentView(parentView of PopUpView)键盘显示/隐藏的来源,以便PopUpView可以正确显示并获得适当的空间。

见下文是 UITextView 的委托方法响应返回作为编辑开始和结束。

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
 //chnage the OriginY of PopUpView's SUperView
}
- (void)textViewDidBeginEditing:(UITextView *)textView
{  
 //re Adjust the OriginY of PopUpView's SUperView
}

我希望它对你有帮助。

于 2013-05-10T09:58:17.613 回答
1

我找到了解决方案:

- (void)keyboardDidShow:(NSNotification *)notification {
NSLog(@"Notification: %s", __PRETTY_FUNCTION__ );
//
CGFloat textviewBottom = CGRectGetMaxY(self.commentsTextView.frame);
CGRect belowTextViewRect = CGRectMake(0, textviewBottom, 350.f, self.scrollView.contentSize.height - textviewBottom);
// NB! This works ONLY: 1) keyboardDidShow 2) Non-animated;
// Does NOT work: 1) animated, 2) keyboardWillShow, 3) textViewDidBeginEditing
[self.scrollView scrollRectToVisible:belowTextViewRect animated:NO];
}
于 2013-05-10T11:46:34.887 回答