Squeak.ru - шаблоны программирования

Изменение показателей для нового симулятора iOS в Xcode 6

Мое приложение отлично работает в 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.


Ответы:


1

Обход ошибки iOS 7 для ширины и высоты в портретной ориентации - я надеюсь, что это поможет кому-то в будущем при миграции на iOS8.

// Called when the UIKeyboardDidShowNotification is sent.
   - (void)keyboardWillShow:(NSNotification*)aNotification
   {
   [self UpdatePatientFromForm];
    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;

    //Account for iOS 7 inversion of height and width
    CGFloat kbHeight = (kbSize.width>kbSize.height)? kbSize.height : kbSize.width;
    CGFloat windowHeight = (self.view.window.frame.size.width>self.view.window.frame.size.height)? self.view.window.frame.size.height : self.view.window.frame.size.width;
    CGFloat visibleScreenHeight = windowHeight - kbHeight;


    if (firstResponderFrame.origin.y+firstResponderFrame.size.height+100-self.scrollView.contentOffset.y > visibleScreenHeight) {
        dispatch_async(dispatch_get_main_queue(), ^{
            [self.scrollView setContentOffset:CGPointMake(0, firstResponderFrame.origin.y-windowHeight/2+100+firstResponderFrame.size.height/2) animated:YES];
        });   
    }  
}
20.06.2014
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...