[self.scrollView scrollRectToVisible:textField.bounds animated:YES];
我似乎无法让我的UIScrollView完全滚动,因此它不会遮挡我的UITextField。我认为scrollRectToVisible将是我的救世主,但它看起来像是不行。也许我错过了将textField的坐标转换为我的scrollView的内容。无论哪种方式都可以查看我的示例项目。
哦,这个项目可能缺少委托连接,但我检查了它,但它仍然没有滚动。
我见过类似的其他问题,但没有提到Autolayout。
答案 0 :(得分:7)
转换为自动布局后,我遇到了scrollRectToVisible::
的问题。我刚刚将其更改为直接调用setContentOffset::
,它又开始工作了。
答案 1 :(得分:0)
我遇到了同样的问题,我想将自动浏览的UITextEdit滚动到视图中,而不是第一个响应者。
对我来说,问题是UITextField的边界是在自动布局过程中稍后设置的,所以如果你在设置布局后立即执行它,那么边界就无效了。
为了解决方法,我确实创建了UITextField的后代,覆盖了setBounds:
并添加了一个0计时器以滚动到视图"稍后在" (你不能在那一刻滚动,因为那时系统的自动布局传递可能没有完成)
@interface MyTextField: UITextField
{
bool _scrollIntoView;
}
..
@end
@implementation MyTextField
-(void)setBounds:(CGRect)bounds
{
bool empty=CGRectIsEmpty(self.bounds);
bool isFirstResponder=self.isFirstResponder;
[super setBounds:bounds];
if (empty && !isFirstResponder && _scrollIntoView)
[self performSelector:@selector(scrollIntoViewLater) withObject:nil afterDelay:0];
else if (empty && isFirstResponder)
[self performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0];
}
-(void)scrollIntoViewLater
{
CGRect r=[scrollView convertRect:self.bounds fromView:self];
[scrollView scrollRectToVisible:r animated:TRUE];
}
@end
如果字段应该可以使用屏幕键盘进行额外编辑,请稍后调用becomeFirstResponder:它使用私有scrollTextFieldToVisible
API自动滚动到键盘上方的视图中,而私有scrollRectToVisible:animated:
API又调用students[0]
滚动视图。
您的示例链接已损坏btw ...