У меня есть наблюдаемый метод, который срабатывает, когда отображается soft keyboard
. Он работает нормально, но по какой-то причине height
из soft keyboard
изменяется после того, как он был скрыт, а затем представлен во второй раз. Я не могу найти причину для этого, и, кажется, нет ничего в делегате скрытия, который изменяет его значение. Что вызывает это? Я обошел проблему, сохранив высоту, а затем использовал ее во второй раз, но я хотел бы знать причину этой проблемы.
- (void)keyboardWasShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize keyboardSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
CGRect visibleRect = self.view.frame;
if (_storedKeyboardHeight.size.height == 0) {
_storedKeyboardHeight.size.height = keyboardSize.height;
}
visibleRect.size.height = _storedKeyboardHeight.size.height;
visibleRect.origin.y = self.view.height - visibleRect.size.height;
CGRect rectOfCellInTableView = [self.loginTableView rectForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:1]];
//This changes the second time
NSLog(@"? %f", keyboardSize.height);
//so I store the original value here
NSLog(@"? %@", CGRectCreateDictionaryRepresentation(_storedKeyboardHeight));
if ((rectOfCellInTableView.origin.y + rectOfCellInTableView.size.height) > visibleRect.origin.y){
CGPoint scrollPoint = CGPointMake(0.0, (rectOfCellInTableView.origin.y + rectOfCellInTableView.size.height) - visibleRect.origin.y + 50);
[self.loginTableView setContentOffset:scrollPoint animated:YES];
}
}
Первый раз высота равна 291, второй раз - 233.