键盘解除后,表格视图将无法正确滚动!

时间:2010-12-09 23:58:34

标签: uitableview ios keyboard

我的TableView滚动得非常好,直到键盘显示出来......然后它在键盘可见时工作。但是,当我隐藏键盘时,TableView根本不会滚动。

任何人都可以想到可能出错的事情吗?我已经附上了一些有用的代码,但我真的非常感谢现在的任何指导。谢谢!

这是我的相关代码(带有一堆NSLog - 没有记录的值发生变化): 隐藏键盘会更改插图以使一切正常工作(它隐藏了我可能已显示的自定义键盘)。这就是为什么我总是将contentInset切换回来......

- (void)textFieldDidBeginEditing:(UITextField *)textField{
 if(self.pickerView.frame.origin.y < 480){
  [self hideKeyboard];
 }
 NSLog(@"A1: (%f,%f,%f,%f)",self.tableView.contentInset.top,self.tableView.contentInset.bottom,self.tableView.contentInset.left,self.tableView.contentInset.right);
 NSLog(@"B1: (%f,%f,%f,%f)",self.tableView.frame.origin.x,self.tableView.frame.origin.y,self.tableView.frame.size.width,self.tableView.frame.size.height);
 NSLog(@"C1: (%f,%f)",self.tableView.contentSize.height,self.tableView.contentSize.width);
 NSLog(@"D1: (%f,%f,%f,%f)",self.view.frame.origin.x,self.view.frame.origin.y,self.view.frame.size.width,self.view.frame.size.height);
 NSLog(@"E1: (%f,%f)",self.tableView.contentOffset.x,self.tableView.contentOffset.y);
 self.tableView.contentInset = UIEdgeInsetsZero;
}

- (void)textFieldDidEndEditing:(UITextField *)textField{
 self.tableView.contentInset = UIEdgeInsetsZero;
 NSLog(@"A1: (%f,%f,%f,%f)",self.tableView.contentInset.top,self.tableView.contentInset.bottom,self.tableView.contentInset.left,self.tableView.contentInset.right);
 NSLog(@"B2: (%f,%f,%f,%f)",self.tableView.frame.origin.x,self.tableView.frame.origin.y,self.tableView.frame.size.width,self.tableView.frame.size.height);
 NSLog(@"C2: (%f,%f)",self.tableView.contentSize.height,self.tableView.contentSize.width);
 NSLog(@"D2: (%f,%f,%f,%f)",self.view.frame.origin.x,self.view.frame.origin.y,self.view.frame.size.width,self.view.frame.size.height);
 NSLog(@"E2: (%f,%f)",self.tableView.contentOffset.x,self.tableView.contentOffset.y);

 self.exercise.exerciseName = textField.text;
 [appDelegate doOperation:1 onExercise:self.exercise];
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)text {
 //Make the DONE button work...
    if([text isEqualToString:@"\n"]) {
        self.tableView.contentInset = UIEdgeInsetsZero;
        [textField resignFirstResponder];
  NSLog(@"A3: (%f,%f,%f,%f)",self.tableView.contentInset.top,self.tableView.contentInset.bottom,self.tableView.contentInset.left,self.tableView.contentInset.right);
  NSLog(@"B3: (%f,%f,%f,%f)",self.tableView.frame.origin.x,self.tableView.frame.origin.y,self.tableView.frame.size.width,self.tableView.frame.size.height);
  NSLog(@"C3: (%f,%f)",self.tableView.contentSize.height,self.tableView.contentSize.width);
  NSLog(@"D3: (%f,%f,%f,%f)",self.view.frame.origin.x,self.view.frame.origin.y,self.view.frame.size.width,self.view.frame.size.height);
  NSLog(@"E3: (%f,%f)",self.tableView.contentOffset.x,self.tableView.contentOffset.y);
        return NO;
    }
return YES;
}

0 个答案:

没有答案