Slide 1

Slide 1 text

%O%JOJ04 ŠUIF&SBPG.VMUJUBTLJOH !NBUVZVKJ ؔ੢ϞόΠϧΞϓϦݚڀձ

Slide 2

Slide 2 text

!NBUVZVKJ TBGYEFWCMPHTQPUKQ

Slide 3

Slide 3 text

TBGYJPTEOEEFNP

Slide 4

Slide 4 text

.VMUJUBTLJOH 4MJEFPWFS 4QMJUWJFX 1JDUVSFJOQJDUVSF

Slide 5

Slide 5 text

Two foreground apps

Slide 6

Slide 6 text

4QMJUWJFXBMMPXTVTFSTUP JOUFSBDUCFUXFFOUXPBQQT

Slide 7

Slide 7 text

%O%CFUXFFO UXPBQQT

Slide 8

Slide 8 text

UPVDIFT.PWFE (-100, 400) (607, 400) (-507, 0) (507, 0) %SBHFWFOUTDPOUJOVFPOUIFPVUFSPGUIFXJOEPXPGBQQ

Slide 9

Slide 9 text

*OUFSBQQ%O% 4PVSDF"QQ %FTU"QQ touchesBegan touchesMoved touchesEnded 4IBQFJOGP $PPSEJOGP *OOFSPSPVUFS

Slide 10

Slide 10 text

*1$ w 1BTUFCPBSE w $'.FTTBHF1PSU X"QQ(SPVQT*% w .BDI1PSU mach_msg_send w %BSXJO/PUJpDBUJPO w 4IBSFE6TFS%FGBVMUT X"QQ(SPVQT*%

Slide 11

Slide 11 text

1BTUFCPBSE5JNFS UPPMBUFUPSFDFJWF6*1BTUFCPBSE$IBOHFE/PUJpDBUJPO let p = touches.first!.locationInView(view) myPasteboard.string = "M,\(Int(p.x)),\(Int(p.y))" dispatch_source_set_timer(timer, now, USEC_PER_SEC * 50, 0) dispatch_source_set_event_handler(timer) { () -> Void in if let pb = UIPasteboard(name: otherID, create: false) { : } } dispatch_resume(timer) 4PVSDF"QQ VTFTOBNFEQBTUFCPBSE %FTU"QQ LOPXTTPVSDFBQQ`TQBTUFCPBSEOBNF

Slide 12

Slide 12 text

3FGFSFODFT w "EPQUJOH.VMUJUBTLJOH&OIBODFNFOUTPOJ1BE
 IUUQTEFWFMPQFSBQQMFDPNMJCSBSZQSFSFMFBTFJPTEPDVNFOUBUJPO8JOEPXT7JFXT$PODFQUVBM "EPQUJOH.VMUJUBTLJOH0OJ1BEJOEFYIUNM w *OUFSQSPDFTTDPNNVOJDBUJPOPOJ04XJUI.BDINFTTBHFT
 IUUQEEFWJMMFNFJOUFSQSPDFTTDPNNVOJDBUJPOPOJPTXJUINBDINFTTBHFT w *OUFS1SPDFTT$PNNVOJDBUJPO
 IUUQOTIJQTUFSDPNJOUFSQSPDFTTDPNNVOJDBUJPO