8

iOS 10 の今日の拡張機能を更新して、デリゲート メソッドを実装しました。

-(void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize
{
    if (activeDisplayMode == NCWidgetDisplayModeCompact){
        [UIView animateWithDuration:0.25 animations:^{
            self.preferredContentSize = maxSize;
            [self.view layoutIfNeeded];
        }];
    }
    else if (activeDisplayMode == NCWidgetDisplayModeExpanded){
        newHeight = [self getNewWidgetHeight];
        [UIView animateWithDuration:0.25 animations:^{
            self.preferredContentSize = CGSizeMake(0, newHeight);
            [self.view layoutIfNeeded];
        }];
    }
}

すべて正常に動作します。しかし、ウィジェットをコンパクト モード (さらに表示オプションを使用可能) のままにし、ウィジェット画面を再実行/再度開いて、[さらに表示] ボタンをタップしても、デリゲート メソッドがトリガーされても何も起こりません。ウィジェットが拡大し始めるまで、表示を増やす/減らすを 2 回押す必要があります。次のエラーも表示されます。No active animation block!

4

2 に答える 2

14

問題が見つかりました。

ウィジェットがコンパクト モードの場合でも、編集していましたself.preferredContentSize。if を更新するたびに確認してください。preferredContentSizewidgetActiveDisplayModeNCWidgetDisplayModeExpanded

于 2016-10-25T08:32:31.940 に答える
2

私は同じ問題を抱えていたので、ストーリーボードをチェックアウトすると、「ユーザーが優先する明示的なサイズ」の設定が有効になっていることに気付きました。

ここに画像の説明を入力

そのオプションを無効にするとうまくいきました。

于 2017-04-26T16:01:37.587 に答える