1
我有這個代碼,當我點擊單元格內的文本框,以便鍵盤不重疊底部行時,調整tableview的大小。問題是,它會調整後,它滾動表中的,而不是我點擊了文本框在細胞的頂部。UITableView調整大小,但不正確滾動
- (void)keyboardDidShow:(NSNotification *)notification
{
NSDictionary *userInfo = [notification userInfo];
CGSize size = [[userInfo objectForKey: UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
CGRect frame = CGRectMake(self.vitalsTableView.frame.origin.x,
self.vitalsTableView.frame.origin.y,
self.vitalsTableView.frame.size.width,
self.vitalsTableView.frame.size.height - size.height);
self.vitalsTableView.frame = frame;
VitalsTableViewCell *cell = (VitalsTableViewCell*)[self.selectedTextField superview];
[self.vitalsTableView scrollRectToVisible:cell.frame animated:YES];
}
- (void)keyboardWillHide:(NSNotification *)notification
{
NSDictionary *userInfo = [notification userInfo];
CGSize size = [[userInfo objectForKey: UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
self.vitalsTableView.frame = CGRectMake(self.vitalsTableView.frame.origin.x,
self.vitalsTableView.frame.origin.y,
self.vitalsTableView.frame.size.width,
self.vitalsTableView.frame.size.height + size.height);
}
- (void) textFieldDidBeginEditing:(UITextField *)textField {
self.selectedTextField = textField;
// [self scrollToRectOfTextField];
NSIndexPath *path = [self.vitalsTableView indexPathForSelectedRow];
[self.vitalsTableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
- (void)scrollToRectOfTextField {
VitalsTableViewCell *cell = (VitalsTableViewCell*)[self.selectedTextField superview];
CGRect r = CGRectMake(self.selectedTextField.frame.origin.x,
cell.frame.origin.y+self.selectedTextField.frame.origin.y,
self.selectedTextField.frame.size.width,
self.selectedTextField.frame.size.height);
[self.vitalsTableView scrollRectToVisible:r animated:YES];
NSIndexPath *path = [self.vitalsTableView indexPathForSelectedRow];
[self.vitalsTableView scrollToRowAtIndexPath:path atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
正確,但不應該'scrollToRectOfTextField'方法我有這樣做? – Jon
哦,是的。更新我的答案以反映這一點。 :) – john
此外,你甚至不會調用'scrollToRectOfTextField'。你評論它。一旦你取消註釋,它會起作用嗎?還是你在別的地方叫它? – john