QT アプリがあり、OSX でネイティブ メニューを使用しています。独自の NSView 派生クラスを、特別に描画したい NSMenuItems にアタッチして作成したカスタム描画メニュー項目があります。これはすべて正常に機能します。メニュー項目が右に描画され、メニュー機能が正しくアクティブになります。ただし、メニュー機能を有効にしても、メニューは消えず、マウスの動きを追跡し続けます。(カーソルはまだアイテムを強調表示します) 私は何日もグーグルで答えを探しましたが、他の場所で同様の問題を見たことがありません。私の NSView クラスは単純です。描画用に「rect」クラスをオーバーライドしました。mouseUp イベントは次のとおりです。
-(void)mouseUp:(NSEvent *)theEvent
{
NSMenuItem* item = [self enclosingMenuItem];
if ( item != nil ){
NSMenu *menu = [item menu];
if ( menu != nil ){
[menu cancelTracking];
[NSApp sendAction:[item action] to:[item target] from:item];
}
}
}
また、「cancelTrackingWithoutAnimation」を使用してみました。また、親メニュー バーで cancelTracking を呼び出してみました。「cancelTracking」が失敗する可能性がある状況を誰か教えてもらえますか? 次に何を試せばよいかわかりません。ありがとう。