0

プロジェクトの 1 つに Oomph MacMapKit を統合しました。すべての手順を実行しました。しかし問題がある。私は NSToolbar を使用していて、ビューを切り替えています。別のページに切り替えてからマップページに戻ると、マップページにいるときはいつでも、マップは MKMapView の下に描画され、MKMapView は白ですが、白い領域でマウスをドラッグしてマップ内を移動できます。

別のプロジェクトでも試してみましたが、これも同じように機能します。

ノーマルルック

http://i.stack.imgur.com/kf4AL.png

切り替え後

http://i.stack.imgur.com/BOJK6.png

これを修正する方法を知っている人はいますか?

このコードは、ページを切り替えるためにウィンドウコントローラーデリゲートで実行されています

- (NSView*)viewForTag:(int)tag
{
    switch (tag)
    {
        case 0:
            return [firstViewController view];
            break;
        case 1:
            return [secondViewController view];
            break;
        default:
            return [firstViewController view];
            break;
    }
}

- (IBAction)switchViews:(id)sender
{
    NSView* currentView = [self viewForTag:[sender tag]];
    NSView* previousView = [self viewForTag:currentViewTag];

    currentViewTag = [sender tag];

    [[[[self window] contentView] animator] replaceSubview:previousView with:currentView];
}

マップ ページに特別なコードはありません。

前もって感謝します

4

2 に答える 2

0

このマップキットは時々少しバグがあり、ビューの表示方法を変更することで問題が解決しました。

于 2012-08-03T07:15:17.450 に答える
0

私はあなたのコードを責めることはできません。コードをステップ実行して、すべてのビューが適切に追加および削除されていることを確認したと思います。また、切り替え後にマップ ビューに設定されているフレームを確認することもできます。フレームの NSRect が空白の場所にある場合、どういうわけか MKMapView はビュー スタックへの追加およびビュー スタックからの削除に熱心ではありません。

それはロングショットですが、次のいずれかを試すことができます。

  • setHidden:マップ ビューを削除して追加するのではなく、一時的に非表示にするために使用します。確かではありませんが、これにより少しパフォーマンスが向上する可能性があり、非表示と表示はおそらく追加と削除よりも安価です...

  • ビューを切り替えるには、addSubView:とを使用します。removeFromSuperviewこれには、ビューのフレーミングを正しく設定するためのコードが必要になる場合や、ビューを追加するときに使用できる便利な「デフォルト」フレームが必要になる場合があります。

要するに、MKMapView は WebView のラッパーであり、少し奇妙な動作をしているように見えることがあります。

于 2012-04-18T15:53:43.677 に答える