1

stackoverflow で検索すると、iOS で touchDown イベントをシミュレートする方法がわかりましたが、何度も試してみましたが、GSEvent で touchMoved イベントを作成する方法がわかりませんでした。

touchDown イベントをシミュレートします。

static void sendclickevent() {

CGPoint location = CGPointMake(200, 288);

// structure of touch GSEvent
struct GSTouchEvent {
    GSEventRecord record;
    GSHandInfo    handInfo;
} * event = (struct GSTouchEvent*) &touchEvent;
bzero(touchEvent, sizeof(touchEvent));

// set up GSEvent
event->record.type = kGSEventHand;
event->record.windowLocation = location;
event->record.timestamp = GSCurrentEventTimestamp();
event->record.infoSize = sizeof(GSHandInfo) + sizeof(GSPathInfo);
event->handInfo.type = kGSHandInfoTypeTouchDown;
if (is_50_or_higher){
    event->handInfo.x52 = 1;
} else {
    event->handInfo.pathInfosCount = 1;
}
bzero(&event->handInfo.pathInfos[0], sizeof(GSPathInfo));
event->handInfo.pathInfos[0].pathIndex     = 1;
event->handInfo.pathInfos[0].pathIdentity  = 2;
event->handInfo.pathInfos[0].pathProximity = 1 ? 0x03 : 0x00;;
event->handInfo.pathInfos[0].pathLocation  = location;

mach_port_t port = (mach_port_t)getFrontMostAppPort();
GSSendEvent((GSEventRecord *)event, port);
}
4

1 に答える 1

1
  event->handInfo.type = kGSHandInfoTypeTouchDown;

あなたにはタッチダウンがあり、タッチアップがありますか?

シングルタップは次のようになります。

   touchdownAtPoint(x,y);
   wait(0.1);//wait for 0.1 sec
   touchUpAtPoint(x,y);

タッチ移動を行いたい場合は、次のようにする必要があります。

    touchdownAtPoint(x,y);
     touchdownAtPoint(x+1,y);//scroll to right?
    touchdownAtPoint(x+2,y);
     .................
     touchdownAtPoint(x+n,y);
     touchUpAtPoint(x+n,y);

もちろん、独自のループを作成する必要があります。とにかく、それが最も正しい方法かどうかはわかりませんが、うまくいきました。

于 2013-08-01T09:36:04.383 に答える