worksWhenModal
モーダルで動いているウインドウがある場合、キーボードイベントやマウスイベントを受け取ることができるかどうか
@property(readonly) BOOL worksWhenModal
var worksWhenModal: Bool { get }
解説
他にモーダルで動いているウインドウがある場合、キーボードイベントやマウスイベントを受け取ることができるかどうか
このメソッドのNSWindowの実装はNOを返します。
NSPanelのサブクラスだけがオーバーライドできます。
tureの場合、他のウインドウがモーダルでもキーウインドウになることができる。(文字入力やボタンを押すことができる)
YouTube
falseの場合、キーウインドウにはなれない。
false - YouTube
設定値
@property(readonly) BOOL worksWhenModal
var worksWhenModal: Bool { get }
モーダルかYES/NO
フレームワーク
ApplicationKit
クラス
NSWindow
使用可能
10.0
参照
- setWorksWhenModal:(NSPanel)
setWorksWhenModal: - Cocoa API解説(iOS/OS X)
例文
#import "Controller.h" @implementation Controller - (IBAction)pushButton:(id)sender { if ([myWindow worksWhenModal]){ NSLog(@"worksWhenModal YES"); } else{ NSLog(@"worksWhenModal NO"); } } @end
//NSWindow worksWhenModal //windowがモーダルでも、panelに文字入力ができる //サブクラスのworksWhenModal() で trueを返しているから func abortTimer(timer:NSTimer!) { NSLog("abort modal") let anApplication = NSApplication.sharedApplication() var p :MyPanel = timer.userInfo?.objectForKey("panel") as MyPanel if (p.worksWhenModal){ NSLog("panel worksWhenModal YES") }else{ NSLog("panel worksWhenModal NO") } NSLog("%@",p.title!) p.orderOut(self) //modal stop anApplication.abortModal() } @IBAction func function005(sender: AnyObject) { var panel : MyPanel = MyPanel( contentRect: NSMakeRect(0.0, 0.0, 300, 200), styleMask: NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask, backing: .Buffered, defer: false) windowArray.addObject(panel) //ウインドウを保持するための配列に追加。アプリ終了時に配列は破棄 panel.center()//ウインドウをスクリーンの中心に panel.title = "ウインドウタイトル"//タイトル設定 //text field var textField : NSTextField = NSTextField(frame: NSMakeRect(50.0, 50.0, 100.0, 30.0)) panel.contentView.addSubview(textField) panel.orderFront(self)//前面に //タイマー var timer = NSTimer.scheduledTimerWithTimeInterval(30.0, target: self, selector: Selector("abortTimer:"), userInfo: ["panel":panel], repeats: false) //タイマー、モーダルに入るとタイマーが動かなくなるので、ランループに追加する NSRunLoop.currentRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes) let anApplication = NSApplication.sharedApplication() //モーダル開始 var result:NSModalResponse = anApplication.runModalForWindow(window) }
NSPanelのサブクラスworksWhenModalでtrueを返す
class MyPanel: NSPanel { func worksWhenModal() ->Bool{ //windowがモーダルでも、panelに文字入力ができる //サブクラスのworksWhenModal() で trueを返しているから return true } }
編集時のバージョン
10.10