macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

preventWindowOrdering

INDEX>AppKit>NSApplication

最新のマウスダウンイベントを処理する際の通常のウィンドウの順序を抑制します

Objective-C

- (void)preventWindowOrdering

Swift

func preventWindowOrdering()

解説

最新のマウスダウンイベントを処理する際の通常のウィンドウの順序を抑制します。

返り値

なし

引数

なし

フレームワーク

ApplicationKit

クラス

NSApplication

使用可能

10.0

編集時のバージョン

10.10

参照

参考記事(外部サイト)


objective c - Click-through buttons and not raising the window - Stack Overflow

例文

#import "Controller.h"

@implementation Controller
//NSWindowのデリゲート
- (IBAction)pushButton:(id)sender
{
	
	[[NSApplication sharedApplication] preventWindowOrdering];
	
}


@end

Swift

//function037の検証用
import Foundation
import AppKit
@objc(ClickThroughButton)


//作業中
class ClickThroughButton: NSButton {
    override func shouldDelayWindowOrderingForEvent(theEvent: NSEvent) -> Bool {
        let anApplication = MyApplication.sharedApplication()
        return anApplication.active
    }
    
    override func mouseDown(theEvent: NSEvent) {
        let anApplication = MyApplication.sharedApplication()
        if (!anApplication.active){
            NSLog("NO Active")
            anApplication.preventWindowOrdering()
            
            self.highlight(true )
            let theDate:NSDate = NSDate.distantFuture() as NSDate
            let maskUp = NSEventMask.LeftMouseUpMask.rawValue
            let mask = Int( maskUp  ) // cast from UInt
        
        var mouseUpEvent = (anApplication.nextEventMatchingMask(
                Int(mask) ,
                untilDate:(NSDate.distantPast() as NSDate),
                inMode:NSDefaultRunLoopMode,
                dequeue:true))as NSEvent?
        
        if(mouseUpEvent != nil){
        var aPoint :NSPoint = mouseUpEvent!.locationInWindow //NSMakePoint(10.0, 10.0)
        var mouseLocation : NSPoint = self.convertPoint(aPoint, fromView: self)
        var mouseUpInside = self.mouse(mouseLocation, inRect: self.bounds)
        }
        
        self.highlight(false  )

        }else{
            NSLog("YES Active")
            super.mouseDown(theEvent )
        }

    }
}