2012-10-09 50 views
5

我有一個UIScrollView在那裏面我有一個的UITextField,以便在第三個文本框,這是密碼,我向下滾動的偏移量的UIScrollView我所做的是:becomeFirstResponder重置contentOffset

#pragma mark UITextFieldDelegate 
- (void)textFieldDidBeginEditing:(UITextField *)textField 
{ 
    if ((textField == self.emailTextField_ || textField == self.passwordTextField_)){ 
     if (self.scrollView_.contentOffset.y != self.emailTextField_.frameY - self.emailTextField_.frameHeight/2){ 
      shouldAdjustOffset = YES; 
     } else { 
      shouldAdjustOffset = NO; 
     } 

     if (shouldAdjustOffset){ 
      [self.scrollView_ setContentOffset:CGPointMake(0, self.emailTextField_.frameY - self.emailTextField_.frameHeight/2) animated:YES]; 
     } 
    } 
} 

-(BOOL) textFieldShouldReturn:(UITextField *)textField 
{ 
    if (textField == self.firstNameTexField_){ 
     [self.firstNameTexField_ resignFirstResponder]; 
     [self.lastNameTextField_ becomeFirstResponder]; 
    } else if (textField == self.lastNameTextField_){ 
     [self.lastNameTextField_ resignFirstResponder]; 
     [self.emailTextField_ becomeFirstResponder]; 
    } else if (textField == self.emailTextField_){ 
     [self.emailTextField_ resignFirstResponder]; 
     [self.passwordTextField_ becomeFirstResponder]; 
    } else if (textField == self.passwordTextField_){ 
     [self signupButtonPressed:nil]; 
     [self.passwordTextField_ resignFirstResponder]; 
    } 

    return YES; 
} 

現在的問題是,當我在接下來的文本字段會重置內容偏移回0,當我做:

[self.emailTextField_ resignFirstResponder]; 
     [self.passwordTextField_ becomeFirstResponder]; 

。我怎樣才能防止這種情況發生?

回答

3
顯示鍵盤(becomeFirstResponder)之前滾動視圖滾動的

剛剛打開,使回後滾動,

scrollView.scrollEnabled = NO; 
[someControl becomeFirstResponder]; 
scrollView.scrollEnabled = YES; 
[scrollview doTheScrollingHere]; 
0

@Deepan你救了我大量的時間:)只有我會建議是重寫的UITextField方法becomeFirstResponder首先檢查它是否在的UIScrollView如果是禁用滾動了一下

- (BOOL)becomeFirstResponder 
{ 
    if ([self.superview isKindOfClass:[UIScrollView class]]) 
    { 
     [(UIScrollView*)self.superview setScrollEnabled:NO]; 
    } 

    BOOL accept = [super becomeFirstResponder]; 

    if ([self.superview isKindOfClass:[UIScrollView class]]) 
    { 
     [(UIScrollView*)self.superview setScrollEnabled:YES]; 
    } 

    return accept 
} 
相關問題