iOS10 виджет "Показать больше" Ошибка "Показать меньше"

Я реализовал новый виджет для iOS 10 и использовал следующий код для установки высоты:

@available(iOSApplicationExtension 10.0, *)
func widgetActiveDisplayModeDidChange(activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
    if activeDisplayMode == NCWidgetDisplayMode.Compact {
        self.preferredContentSize = CGSizeMake(0.0, 350.0)
    }
    else if activeDisplayMode == NCWidgetDisplayMode.Expanded {
        self.preferredContentSize = desiredSize
    }

}

И это работает нормально, но моя проблема с кнопками "Показать больше" и "Показать меньше". Они не всегда отвечают, и мне очень часто приходится нажимать несколько раз, чтобы вызвать их. Я что-то упустил? Должен ли я добавить больше, чем приведенный выше код для обработки высоты?

3 ответа

У меня была та же проблема, проблема была в том, что я обновил preferredContentSize даже если виджет был в компактном режиме.

Попробуйте проверить каждое место, где вы обновляете preferredContentSize и обновлять размер только если если widgetActiveDisplayMode является NCWidgetDisplayModeExpanded

Свифт 3:

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {
    if (activeDisplayMode == NCWidgetDisplayMode.compact) {
        UIView.animate(withDuration: 0.25, animations: { () -> Void in
            self.preferredContentSize = yourFixSize
        }, completion: nil)

    }
    else {
        UIView.animate(withDuration: 0.25, animations: { () -> Void in
        self.preferredContentSize = yourMaxSize
        }, completion: nil)
    }
}

Была та же проблема, и я обнаружил, что когда мы нажимаем кнопку "показать больше" "показать меньше", анимация отсутствует. Таким образом, вы можете попробовать добавить блок следующим образом:

- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize {

    if (activeDisplayMode == NCWidgetDisplayModeCompact) {
        [UIView animateWithDuration:0.25f
                         animations:^{
                             self.preferredContentSize = yourFixSize;                          }];
    }
    else {

            [UIView animateWithDuration:0.25f
                             animations:^{
                                 self.preferredContentSize = yourMaxSize;
}];
        }
}

Я исправляю эту ошибку таким образом.

Надеюсь, полезно

Другие вопросы по тегам