Мое приложение отлично работает в Xcode 5 на симуляторе сетчатки iPad, но когда я запускаю симулятор в том же проекте с Xcode 6 на симуляторе сетчатки iPad, этот небольшой фрагмент кода:
UIView *firstResp = [self.view findFirstResponder];
CGRect firstResponderFrame = [firstResp convertRect:firstResp.bounds toView:self.view];
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
if (firstResponderFrame.origin.y+firstResponderFrame.size.height+40-self.scrollView.contentOffset.y > self.view.window.frame.size.width-kbSize.width) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.scrollView setContentOffset:CGPointMake(0, firstResponderFrame.origin.y-self.view.window.frame.size.width/2+100+firstResponderFrame.size.height/2) animated:YES];
});
}
В основном этот код выполняется, когда появляется клавиатура, чтобы центрировать вид. Теперь он ведет себя очень плохо; иногда клавиатура даже не появляется.
В Xcode 6 не отображаются ошибки. Метрика, похоже, такая же, как и в моем первоначальном тесте разных кадров. Я использую NSNotification
для клавиатуры: может быть, это причина?
Этот код также находится в контроллере представления внутри контроллера представления контейнера в другом VC.
Это не совсем конкретный вопрос, но мне очень любопытно, почему это не сработает. Я работаю на iOS 7.1 в обеих версиях Xcode. Симулятор в Xcode 6 показывает iOS 8 в строке заголовка окна, но мое приложение настроено для работы на iOS 7.1.
**
редактировать:
** НВМ.. нашел. Я недостаточно тщательно проверил, прежде чем спрашивать. Для тех, кто заинтересован, в IOS 7 была ошибка, из-за которой высота и ширина оставались прежними, даже если ориентация изменилась, насколько мне известно, это произошло с view.window.frame и размером клавиатуры. Эта ошибка кажется исчезнет для iOS 8.