Я рассчитал позиции и смещения на бумаге. Я написал код и отладил, чтобы получить ожидаемые результаты. Однако на iPhone Simulator вещи перекрывают примерно на 15 пикселей.
Чтобы продолжить отладку, мне нужно знать, где именно находятся объекты пользовательского интерфейса на экране.
Относится к всплывающей поисковой клавиатуре и изменению размера UITableView между статическим UISearchBar и динамически добавленным UITabBar (представление таблицы встроено в одну из вкладок). Нет, я действительно не хочу использовать какие-либо жестко заданные значения из-за поворота и разных размеров экрана.
Как я могу это узнать?
- (void)keyboardWasShown:(NSNotification*)aNotification
{
if (self.keyboardShown)
return;
// Get keyboard dimensions
NSDictionary* info = [aNotification userInfo];
NSValue* aValue = [info objectForKey:UIKeyboardBoundsUserInfoKey];
CGSize kbSize = [aValue CGRectValue].size;
NSValue* endValue = [info objectForKey:UIKeyboardCenterEndUserInfoKey];
CGPoint endCenter = [endValue CGPointValue];
CGRect frame = myView.frame;
frame.size.height = endCenter.y - kbSize.height/2 - frame.origin.y;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.2];
myView.frame = frame;
[UIView commitAnimations];
self.keyboardShown = YES;
}
... код на тот случай, если есть явные ошибки, которые я больше не вижу ...