【发布时间】:2011-08-25 17:40:23
【问题描述】:
我正在尝试在键盘启动时浏览 UITextFields。我有一个带有 UIScrollView 的 xib 设置,里面有文本字段。当 UITextField 设置为第一响应者时,我的 contentOffset.y 会发生变化。前两个文本字段反应正常,但之后滚动视图将跳过选定的文本字段,并且在我得到的列表中越往下越差。我已经设置了 NSLog 语句和断点,这些断点向我表明,当我第一次选择文本字段时,使用了正确的 y 值,但是在几次之后直接调用了滚动视图的 scrollViewDidScroll 方法,运行通过了文本字段。
-(void)textFieldDidBeginEditing:(UITextField *)textField{
textField.inputAccessoryView = accessoryBar;
int offset = 30;
[scrollView setContentOffset:CGPointMake(0, textField.frame.origin.y -offset) ];
}
-(void)textFieldDidEndEditing:(UITextField *)textField{
[scrollView setContentOffset:CGPointMake(0, 0)];
}
-(BOOL) textFieldShouldReturn:(UITextField*) textField {
[textField resignFirstResponder];
return YES;
}
我在 xcode 4.1 lion 上运行 iOS 4.3
【问题讨论】:
-
您是否在 scrollViewDidScroll 中做任何可以改变这一点的事情?还是您在其他任何地方设置内容偏移量?
-
除了使用 NSLog 打印偏移调用之外,我没有使用 scrollViewDidScroll。"NSLog(@"scrollview:offsetY:%f height:%f", scrollView.contentOffset.y,scrollView.contentSize.高度);"
-
你的偏移量总是30吗?并且一定要像 Mundi 所说的那样记录 textField 框架。
-
查看以下链接以获取帮助。 [您的问题解决方案在这里..][1] [1]:stackoverflow.com/questions/7193787/… 谢谢,
-
scrollView 的 contentOffset.y 总是设置为 textField.frame.origin.y - 30
标签: iphone cocoa-touch uiscrollview ios4