2012-02-25 13 views
7

Geçerli metin alanı hakkında bilgi bildiren global bir uygulamam var. Bunu kurdunuz yüzden benim fare tıklaması her zaman, çalıştırın:| NSScreen mainScreen | klavye/fare odağı diğer monitöre giderken güncellenmiyor mu?

NSLog(@"Screen:%f,%f", [[NSScreen mainScreen] frame].size.width, [[NSScreen mainScreen] frame].size.height); 

Ama bir ekranda bir yazı bölümünde klavye odağı koyduğunuzda, ardından aynı yazı bölümünde fare (arka arkaya) tıklayın [[NSScreen mainScreen] frame] genellikle yanlış ekran boyutlarını bildiriyor! Bana diğer ekranın boyutlarını veriyor.

Elma dokümanlar ki:

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSScreen_Class/Reference/Reference.html

ana ekran mutlaka menü çubuğunu içeren veya en aslına vardır aynı ekran değil (0, 0). Ana ekran, şu anda klavye olaylarını alan pencereyi içeren ekranını ifade eder. Ana ekran bu, çünkü kullanıcısının büyük olasılıkla etkileşim kurduğu tek şey.

Bu, klavye odağı ekranının her zaman ana ekran olduğunu belirtir. Klavye odaklama ve fare odağı veriyorum. O zaman neden% 50 oranında diğer ekranını alıyorum?

Bu bir hata [NSScreen mainScreen] içinde mi? Bir şekilde yeniden hesaplama yapmak zorunda mıyım? Ekranın klavye odağı boyutlarını almanın başka bir yolu var mı?

cevap

6

Bu klavye odaklı ekran her zaman ana ekran olduğunu söylüyor. Klavye odaklama ve fare odağı veriyorum. Öyleyse neden diğer ekranın% 50'sini alıyorum?

bu sirke seçmek olduğunu biliyorum, ama teknik olarak ana ekran tuşu odağı pencere içeren ekran olduğunu söylüyor. Yani bir metin alanı ile iki ekran kapsayan bir pencere varsa ve pencerenin kökeni ekran 1 üzerindeyse, ancak metin alanı ekran 2 üzerinde olan pencerenin parçası ve metin alanı odaklanır, ana ekran hala fare içeren ekran almak için ekran 1.

+0

Doğru, ben de fark ettim ve aşağı çok küçük bir boyuta pencereyi yeniden boyutlandırmak ve bir ekranda tamamen koydu yaptı. Hala sorun var. – cksubs

+1

Onaylamak için, [window screen] sonucunu da kontrol edebilirsiniz. –

+0

[TheWindowIamInteractingWith screen] kastediyor musunuz? Bu küresel bir uygulama, pencere farklı bir uygulamaya ait, bu yüzden bu bilgiye sahip olduğumu düşünmüyorum. Başka bir şey ifade ederseniz, lütfen bana bildirin. – cksubs

İlgili konular