9

Mac OS Sierra と新しい XCode バージョンにアップグレードしてから、NSToolbarItems ごとにアプリケーションを起動するたびに次のエラーが発生します。

Example 1:
2016-09-29 12:46:58.659879 AppTest[] NSToolbarItem (<NSToolbarItem: >) had to adjust the size of <NSPopUpButton: > from {130, 26} to the expected size of {132, 27}. Make sure that this toolbar item view has a valid frame/min/max size. This is an app bug, please do not file a bug against AppKit or NSToolbar! Break on _NSToolbarAdjustedBorderedControlSizeBreakpoint
Example 2:
2016-09-29 12:46:58.666074 AppTest[] NSToolbarItem (<NSToolbarItem: >) had to adjust the size of <NSButton: > from {60, 25} to the expected size of {62, 27}. Make sure that this toolbar item view has a valid frame/min/max size. This is an app bug, please do not file a bug against AppKit or NSToolbar! Break on _NSToolbarAdjustedBorderedControlSizeBreakpoint

StoryBoard をいじってみましたが、うまくサイズを変更できませんでした。検索すると、新しい OS でもこの問題を抱えている人が何人か見つかりましたが、役立つ回答はありませんでした。

同じ問題に直面している人、アドバイスはありますか?

どうもありがとう、

マルク

4

5 に答える 5

1

インターフェイスビルダーでこれを解決できませんでした。ただし、NSToolbarItem のサブクラスで minSize をオーバーライドすると、問題が解決しました。

- (NSSize)minSize
{
    if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) {
        /* Overriding this getter seems to be the only solution for runtime error logs like: NSToolbarItem (<APMRegularToolbarItem: 0x60e000039460>) had to adjust the size of <NSButton: 0x60f0001acce0> from {40, 25} to the expected size of {42, 27}. Make sure that this toolbar item view has a valid frame/min/max size. This is an app bug, please do not file a bug against AppKit or NSToolbar! Break on _NSToolbarAdjustedBorderedControlSizeBreakpoint
         */
        return NSMakeSize(42, 27);
    }
    else {
        return [super minSize];
    }
}
于 2016-12-19T10:53:18.377 に答える
0

もともと私はこれを試しました(以下の更新を参照してください):

http://cocoa-dev.apple.narkive.com/iSLaiCLR/strange-toolbar-item-error

要約:

私のオプションは次のとおりです。

  • 上記のように最大サイズを変更すると、Sierra より前のバージョンではツールバー項目が間違ったサイズで表示される可能性があります。

  • 警告を無視して、各バージョンですべてが正常に表示されるようにします。

また、次の点にも注意してください。

何が起こっているのかを理解するまで、私はすでにこれを試して成功していないと思っていました。値を編集してから、IB のツールバー エディターを閉じました。変更が保存されていないことに気付きました。ツールバー エディターを再度開いたとき、古い値がまだ表示されていました。ツールバー エディタを開いた状態で 1 回実行すると、変更が反映されたようです (はい、さまざまな段階でクリーニングを試みました)。

2016年12月更新 -------

何らかの理由で、minSize は時々ランダムに変化していました。最後に、この NSToolBarItems をすべて次のクラスにリンクしました。これで修正されました。

    import Cocoa

    class ToolbarItemAvoidMinWarningIssue: NSToolbarItem {

    var widthT: CGFloat = 60
    var heightT: CGFloat = 27

    override var minSize: NSSize{
        get {
            return NSSize(width: widthT, height: heightT)
        }
        set {
            widthT = newValue.width
        }
    }

}
于 2016-09-29T11:12:26.353 に答える