Desidero inserire l'evento tocco in iPhone. Ottengo le coordinate dell'evento touch tramite la presa di rete. GSSendEvent sembra essere una buona scelta. Tuttavia, ha bisogno di GSEventRecord come uno degli input.GSSendEvent - Inject Touch Event iOS
Qualcuno sa come preparare GSEventRecord? L'ho preparato in base ad alcuni esempi, ma l'app si arresta in modo anomalo dopo la chiamata a GSSendEvent.
Apprezzare qualsiasi aiuto.
-(void) handleMouseEventAtPoint:(CGPoint) point
{
static mach_port_t port_;
// structure of touch GSEvent
struct GSTouchEvent {
GSEventRecord record;
GSHandInfo handInfo;
} ;
struct GSTouchEvent *touchEvent = (struct GSTouchEvent *) malloc(sizeof(struct GSTouchEvent));
bzero(touchEvent, sizeof(touchEvent));
// set up GSEvent
touchEvent->record.type = kGSEventHand;
touchEvent->record.windowLocation = point;
touchEvent->record.timestamp = GSCurrentEventTimestamp();
touchEvent->record.infoSize = sizeof(GSHandInfo) + sizeof(GSPathInfo);
touchEvent->handInfo.type = getHandInfoType(0, 1);
touchEvent->handInfo.pathInfosCount = 1;
bzero(&touchEvent->handInfo.pathInfos[0], sizeof(GSPathInfo));
touchEvent->handInfo.pathInfos[0].pathIndex = 1;
touchEvent->handInfo.pathInfos[0].pathIdentity = 2;
touchEvent->handInfo.pathInfos[0].pathProximity = 1 ? 0x03 : 0x00;
touchEvent->handInfo.pathInfos[0].pathLocation = point;
port_ = GSGetPurpleSystemEventPort();
GSSendEvent((GSEventRecord*)touchEvent ,port_);
}
static GSHandInfoType getHandInfoType(int touch_before, int touch_now){
if (!touch_before) {
return (GSHandInfoType) kGSHandInfoType2TouchDown;
}
if (touch_now) {
return (GSHandInfoType) kGSHandInfoType2TouchChange;
}
return (GSHandInfoType) kGSHandInfoType2TouchFinal;
}
Ciao ELD - Grazie per l'aiuto. Ho provato e si blocca in objc_msgSend. – Jailbroken
ok, per favore controlla il mio progetto su github ... https: //github.com/entryleveldev/touchy – pt2121
Ha funzionato molto bene! Grazie mille. – Jailbroken