2013-02-25 29 views
8

Burada bir NSMenu ile çok çok tuhaf bir sorun yaşıyorum.NSMenuItem, özel görünüm ve mouseUp ile garip bir sorun:

Kullandığım NSMenü öğelerin yaklaşık yarısı, NSMenuItem üzerindeki setView: yöntemiyle bunlara özel görünümleri var. Bu özel görünümde, kullanıcı menü maddesini tıkladığında yakalamak için mouseUp: uyguladım ve bu menü ilk açıldığında mükemmel çalışıyor.

İkinci kez tıklatıldığında, fareyi tıklatırken fareyi sabit tutarsam, bu menü öğelerinin hiçbirine mouseUp çağrılamaz. Ancak, aşağıya tıklarsam, imleci çok az bir şekilde hareket ettirin ve mouseUp'ı çağırırsınız. Yani bir sebepten dolayı bu olayları birşeyler ele geçiriyor, ama sadece menü ikinci kez geliyor ve imleç mouseDown olayından sonra hareket ediyor. (Bazı nedenlerle mouseDown hiçbir zaman menünün ilk veya ikinci görünümünde çağrılır).

Burada neler olup bittiğine dair herhangi bir ipucu var mı? Fare olaylarımı kesiyor ve neden menünün ilk görünümündeki özel görünümüme geçiyorlar, ancak ikinci sırada değil?

+0

de geçer: Daha fazla içerik için

- (void)viewWillMoveToWindow:(NSWindow *)newWindow; { [super viewWillMoveToWindow:newWindow]; if (newWindow != nil && ![newWindow isKeyWindow]) [newWindow becomeKeyWindow]; [self updateTrackingAreas]; } 

, bu bağlantıyı bir göz var: Sorun menü öğeleri içinde kullanıyorum I'n NSView alt sınıf için bu yöntemi sabit ekleme Menünün ikinci görünümünde mouseUp sonra iki kez çağrılır). –

+0

Bu yüzden bu görünümün üstünde NSTextViews var. Bunlar mouseDown'ı alıyorlar, ancak aynı zamanda süper görüntüleriyle de başarısız oluyorlar. Neredeyse NSMenu'nun üstünde fare olaylarını yakalayan bir şey varmış gibi. –

cevap

3

Aynı problem vardı. İlk menü tıklatıldıktan sonra harici bir uygulama başlatıyordum ve menü tekrar açıldığında pencerenin anahtarı artık değildi. (Ben çift tıklama Ayrıca http://openradar.appspot.com/7128269