私は現在、iOSデバイスとトラックパッドとしてiOSデバイスを機能させるMacOSのクロスプラットフォームアプリケーションを開発中です。Cocoaアプリケーション:プログラムでスクロールしますか?
CGDisplayMoveCursorToPoint
を使用すると、画面上でカーソルを移動できます。魅力のように動作します。 (すなわち、MacOSの上で実行されている)「ホスト」アプリケーションのコードのこの作品で は、私は、マウスのクリック操作を行うことができます。
let currentPosition = foo() // call to my helper function
// that translates NSEvent.mouseLocation()
let downEvent = CGEvent(
mouseEventSource: nil,
mouseType: .leftMouseDown,
mouseCursorPosition: currentPosition,
mouseButton: .left
)
let upEvent = CGEvent(
mouseEventSource: nil,
mouseType: .leftMouseUp,
mouseCursorPosition: currentPosition,
mouseButton: .left
)
downEvent?.post(tap: CGEventTapLocation.cghidEventTap)
upEvent?.post(tap: CGEventTapLocation.cghidEventTap)
これまでのところ、とても良いです。
今、iOSデバイスで2本の指を使ってスクロールを実装したいと考えています。問題は、iOSとmacOS(btw、PeerTalkは素晴らしい)の間の通信ではなく、ホスト上でスクロールイベントを引き起こすことができないという事実です。まず
は、私はこのような何か試してみました:
let eventSource = CGEventSource(stateID: .hidSystemState)
let event = CGEvent(
mouseEventSource: eventSource,
mouseType: .scrollWheel,
mouseCursorPosition: currentPosition,
mouseButton: .left
)
を残念ながら、event
は常にnil
ある、と私は理由を理解することはできません。イベントを作成するときに
NSEvent.mouseEvent(
with: NSEventType.scrollWheel,
location: NSPoint(x: 671.0, y: 568.0),
modifierFlags: .init(rawValue: 0),
timestamp: 198223.19430632601,
windowNumber: 14389,
context: nil,
eventNumber: 0,
clickCount: 1,
pressure: 1.0
)
しかし、私のアプリケーションのクラッシュ:私は試してみたかった他の方法は、この(はい、私はテスト目的のために、私は世界のイベントリスナーからもらった、ハードコードされた値を使用しています)です
スクロール機能をどのように達成することができますか?前もって感謝します!