2011-08-25 122 views
0

我想通过UITextFields在键盘启动时导航。我有一个带有内置文本框的UIScrollView的xib设置。当UITextField被设置为第一响应者时,我将contentOffset.y更改。前两个文本框会正常响应,但在此之后,滚动视图将射过选定的文本框,并且在获得的列表的下方越来越差。我已经设置了NSLog语句和断点,这些断点告诉我,当我第一次选择文本字段时,使用了正确的y值,但随后几次滚动视图的scrollViewDidScroll方法直接调用,运行经过文本字段。UIScrollView自动滚动后,我设置contentOffset

-(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狮子运行iOS 4.3

+0

你在做什么scrollViewDidScroll会改变这个?或者你是否在其他地方设置了内容偏移? – MishieMoo

+0

我没有使用scrollViewDidScroll来打印使用NSLog的偏移调用。“NSLog(@”scrollview:offsetY:%f height:%f“,scrollView.contentOffset.y,scrollView.contentSize.height);” – user912649

+0

你的抵消总是30?像Mundi说的,绝对会登录textField框架。 – MishieMoo

回答

0

也许你accessoryBar是搞乱的东西了? inputAccessoryView属性通常是只读的,所以我假定你已经子类UITextField。在没有accessoryBar的情况下尝试您的代码。

+0

我注释了accessoryBar的作业,我得到了相同的结果 – user912649

+0

你还NSLog你的textField帧?这听起来像那些可能是在不同的坐标...一切都如预期的一样? – Mundi

+0

是的,他们如预期 – user912649