521
Az iPhone SOK programozása Objective-C nyelven Wei -Me n g Lee 2011

Az.iphone.sdk.Programozasa.objective.C.nyelven.2011.eBook AnAhTaR

Embed Size (px)

DESCRIPTION

Iphone sdk programozása magyar nyelven, pdf.

Citation preview

Az iPhone SOK programozsa Objective-C nyelvenWei -Me ng Lee

2011

Az. iPhone SDK programozsa Objective-C nyelven Eeginning iPhone SDK Programming with Objective-C Wei-Meng Lee

Copyright 2010 by Wiley Publishing, Inc., Indianapolis, Indiana Origirral English language edition published by John Wiley & Sons International Rights, Inc. Ali rights reserved. Ths translation published under license. Magyar fordts (Hungarian translation) SZAK Kiad 2011. A2 eredeti angol nyelv kiads jogainak tulajdonosa a Wiley Publishing, Inc. A magyar fordts a Wiley Publishing, Inc. engedlyvel jelenik meg. Fordtotta a SZAK Kiad fordtcsoportja: Balask Attila, Domoszlai Lszl, Dzurdzik dm, Herczeg Gza, Juhsz Gergely, Losonczy Gerg, Neuhauser Mrk, Srosi dm, Ti ber Melinda, Varga Pter A fordtst szakmailag ellenrizte: Forstner Bertalan

ISB

978-963-9863-19-4

A knyv fordtsa a Kilgray Kft. MemoQ (http:/ /www.memoqtm.com) program segtsgvel kszlt.

Minden jog fenntartva. Jelen knyvet, illetve annak rszeit a kiad engedlye nlkl tilos reproduklni, adatrgzt rendszerben trolni, brmilyen formban vagy eszkzzel elektronikus ton vagy ms mdon kzlni.

SZAK Kiad Kft. Az 1795-ben alaptott Magyar Knyvkiadk sKnyvterjesztk

Egyeslsnek a tagja 2060 Bicske, Difa u. 3. www.szak.hu e-mail:

Tel.: 36-22-350-209 Fax: 36-22-565-311 Fszerkeszt:

[email protected] Kiadvezet: Kis dm, e-mail: [email protected] Kis Balzs, e-mail: [email protected]

Csaldomnak: Kiiszonm a megrtst s a tmogatst, ame!Jet a kf!JV ksiftse sorn t/etek kaptam. 5 zeretfek benneteket/

TartalomjegyzkA szerzrl ........................................................... xvii

, as .. .. Koszonet ny1t van1't, ............................................... . xixBevezets ........................................................... . xxiKinek sz l ez a knyv? ................................................................................ xx Mivel foglalkozik ez a knyv? .................................................................... xx Hogyan pl fel ez a knyv? ........................................................................ xxvMi szksges a knyv hasznlathoz? ........................................................ xxv

Jellsek ....................................................................................................... xxv Forrskd .................................................................................................... xxvi Hibajegyzk ............................................................................................... xxvii

p2p.wrox.com ........................................................................................... xxviii

l. rsz: Bevezets1. Bevezets az i Phone programozsba ....................... 3A:z iPhone SDK beszerzse .............................................................................. 4 A:z iPhone SDK rszei ...................................................................................... S

Xcode .................................. ......................................................................................... 6 iPh one Simulator ........................................................................................................ 8 Mire kpes az iPhone Simulato r? ....................................................................... 9 Alkalmazsok eltvoltsa az iPhone Sirnulatorbl... ..................................... 11 Interface Builder ....................................................................................................... 12 Instrurnents ............................................................................................................... 12A:z iPhone OS felptse ................................................................................ 14

Nhny tovbbi hasznos tudnval ............................................................... 17Az iPhone OS verzii .............................................................................................. 18 Tesztels tnyleges eszkzkn ............................. ................................................. 19 Kpernyfelbonts ................................................................................................... 19 Egyablakos alkalmazsok ......................................................................................... 20 Httrben fut alkalmazsok nlkl ....................................................................... 20 Kls felek alkalmazsaira vonatkoz korltozsok ............................................ 21

Tartalomjegyzk

2.

Az

els

Hello World! alkalmazs megirsa ................ 23

Ismerkeds az Xcode-dal .............................................................................. 24 Az Interface Builder hasznlata .............................................................................. 28 A kpernytjols megvltoztatsa......................................................................... 31 Az elemek trendezse ........................................................................................... .. 33 Programkd rsa ...................................................................................................... 35

Az alkalmazs ikonjnak testre szabsa ....................................................... 37

3.

Kivezetsek, mveletek s nzetvezrlk ............... 41A kd s a felhasznli felletegyttmkdsnek

az alapjai.. .................. .42

XIB-fjlok szerkesztse ............................................................................................ 45 Delegcik .......... ................................................................................................. 46 zetvezrlk ..................................................................................................... 47 A View ablak megtervezse .............................................................................. 48 Kivezetsek s mveletek ltrehozsa ............................................................. 50 A nzetvezrl kapcsolata a mvelethez s a kivezetshez .......................... 57 Kivezetsek exponlsa tulajdonsgokknt .................................................... 60 A mvelet leprogramozsa ............................................................... ................. 61 Egy sszetettebb plda ............................................................................................. 62 A mveletek s kivezetsek meghatrozsa .................................................... 62 A mveletek s kivezetsek sszektse ......................................................... 64 A mveletek megvalstsa ............................................................................... 64Nzetvezrlk

................................................................................................ 66

hozzadsa ......................................................................................... 67 A nzet szemlyre szabsa ............................................................. ....................... ... 70

zetvezrl

4.

Az elemek megismerse ...................................... 75Az elemek hasznlata .................................................................................... 76Az Alert elem hasznlata ......................................................................................... 77 Az Action tbla hasznlata ...................................................................................... 81 A Page vezrlelem s az Image elem ................................................................... 84 Elemek csoportostsa szegmentlt vezrlelemrnel ........................................... 91 A Web View hasznlata ........................................................................................... 95

Elemek dinamikus hozzadsa programkd hasznlatval.. ....................... 98

Az elemek hierarchija ................................................................................ 102Vlts a nzetek kztt ................................................................................ 103 A vlts animlsa ................................................................................................... 111 Adatok tadsa nzetek kztt ............................................................................. 113

viii

Tartalomjegyzk

5.

Bevitel aA

billentyzetrl. ...................................

119

billentyzet

hasznlata ............................................................................. 120

A beviteli lehet sgek szemlyre szabsa ......................................... .......... 122 A A Abillentyzet billentyzet

eltntetse ................................................. ...................................... 124 tlltsa szrnbillentyzette .......... ............................................... 127 billentyzet automatikus megjelentse az elem betltsekor. ...................... 132 jelenltnek rzkelse ............................................................ 133

Billentyzet

6.

A

kperny

forgatsa ........................................ 145

Reagls az eszkz forgatsra ................................. .................................. 145Klnbz kpernytjolsok .............................................................................. 149 A forgats kezelse .............................................. ................................................... 150 willAnmateFirstHalfOfRotationTolnterfaceOrientation: ......................... 150 willAnmateSecondHalfO fRotationFromlnterfaceOrientation: ........ ........ 151 willRotateTolnterfaceOrientation: ................................................................. 151 willAnmateRotationTolnterfaceOrientation: .............................................. 152

A

kperny

programozott forgatsa ............................................................ 157

Forgats programfuts kzben ....................... ................................ ...................... 157 A nzet adott tjols megjelentse a betltskor.. ........................................... 158

ll. rsz: iPhone-alkalmazsok kszitse7. Elemvezrlk .................................................. 163Ablakalap alkalmazs ltrehozsa ............................................................. 164ElemvezrlMveletek

programozott hozzadsa ............................................................... 171 ltrehozsa s sszekapcsolsa ................... ....................................... 175

V l ts msik nzetre .................................................................................... 178 A nzetvltsok animlsa ............................................................................ 181

8.

Eszkzsv- s navigcis alkalmazsok .................. 187Eszkzsv-alkalmazsok ............................................................................. 189 Elemek elhelyezse az eszkzsvon ..................................................................... 193 Hogyan jelentsk meg az eszkzsv-alkalmazsokat a klnbz tjolsoknl? ............................................................................... 199 Navigcialap alkalmazsok ..................................................................... 202 avigls msik elemre .......................................................................................... 207

ix

Tartalomjegyzk

9. Segdprogramok.............................................. 215Segdprogramok ksztse .......................................................................... 216 tmenetstlusok ........................................................................................... 221 j elem hozzadsa a segdprogramhoz .................................................... 222

lll. rsz: Adatok megjelenitse s trolsa10. A Tablenzet hasznlata ................................... 233Egyszer

Tab le nzet .................................................................................. 234

Fejlc s lblc hozzadsa .............................. ...................................................... 240 Kp hozzadsa ...................................................................................................... 241 Kijellt elem megjelentse .................................................................................... 242 Behzs .................................................................................................................... 245

Szakaszok megjelenitse ............................................................................. 245Indexels ...................................................................................................... ............ 254 Keressi lehetsg .................................................................................................. 254 Rszletek s pipk.. ....................... ............... ........................................................... 265

11. Alkalmazsbellitsok ....................................... 269Alkalmazspreferencik ltrehozsa ........................................................... 271 A belltsok rtkeinek programozott elrse ........................................... 279A bellitsok rtkeinek betltse ........................................................................ 286 A bellitsok rtkeinek alaphelyzetbe llitsa .................................................... 288 A bellitsok rtkeinek az elmentse ................................. ................................. 289

12. Fjlkezels .................................................... 293Az alkalmazsmappk megismerse .......................................................... 294 A Documents s a Library mappk hasznlata ................................................... 295 Fjlok trolsa az ideiglenes mappban .......................................... ......... ............ 299

Tulajdonsglistk hasznlata ...................................................................... 300

13. Adatbzis-trols az SQLite3 hasznlatval ............ 311Az SQLite3 hasznlata ................................................................................. 312

Adatbzis ltrehozsa s megnyitsa .......................................................... 314A ltrehozott adatbzis vizsglata ......................................................................... 316 Tbla ltrehozsa .................................................................................................... 316

x

Tartalomjegyzk

Rekordok beszrsa ......................................... ...................................................... 318 Vltozk sszekapcsolsa ...................................................................................... 320 Rekordok beolvassa .............................................................................................. 322

IV. rsz: Fej lett i Phone-programozsi mdszerek14. Tbbrintses alkalmazsok programozsa ............ 329rintsek rzkelse .................................................................................... 330 Tbbes rints rzkelse ........................................................................... 336

A csptetsgesztus megvalstsa .......................................................................... 340 A hzsgesztus megvalstsa .......................... ..................................................... 346

15.

Egyszer

animcik .......................................... 349

Az N STirner osztly hasznlata .................................................................. 349

A vizulis vltoztats animlsa ............................................................................ 356Nzetek transzformlsa ............................................................................. 356

Eltols ...................................................................................................................... 358 Forgats .................................................................................................................... 359 tmretezs ............................................................................................................. 361Kpsorozat animlsa .................................................................................. 361

16. Abepitett alkalmazsok elrse ........................ 365E-mailek kldse ......................................................................................... 366

A Sa fari meghvsa ................................................................................................. 369 A Phone alkalmazs meghvsa ............................................................................ 369 Az SMS alkalmazs meghvsa .............................................................................. 370A Carnera s a Photo Library elrse .......................................................... 371

A Photo Library alkalmazs elrse ..................................................................... 371 A Carnera alkalmazs elrse ................................................................................. 377A Contacts alkalmazs elrse .................................................................... 381

vjegy hozzadsa ................................................... ............................................. 386 vjegy trlse ........................................................................................................ 388

xi

Tartalomjegyzk

17. Hozzfrs a hardverhez................................... 391Agyorsulsmr

hasznlata ........................................................................ 391

A rzs szlelse az iPhone OS2 s a korbbi verzikban .......................... 396 A Shake API hasznlata a rzs szlelshez az OS 3.0 alatt ..................... 396Mvelet

vgrehajtsa az eszkz rzsa kzben .......................................... 403

Helyalap szolgltatsok ............................................................................. 404 Trkpek megjelentse ..................... ..................................................................... 409

V. rsz: FggelkekA fggelk: A gyakorlatok megoldsai ........................ 417A 2. fejezet feladatainak a megoldsa ......................................................... 417 Vlasz az 1. krdsre .............................................................................................. 41 7 Vlasz a 2. krdsre ................................................................................................ 41 7 A 3. fejezet feladatainak a megoldsa ......................................................... 418 Vlasz az 1. krdsre ..................................................................... ......................... 418 Vlasz a 2. krdsre ................................................................................................ 418 A 4. fejezet feladatainak a megoldsa ......................................................... 418 Vlasz az 1. krdsre .............................................................................................. 418 Vlasz a 2. krdsre .... ............................................................................................ 419 Vlasz a 3. krdsre ...................................................... .......................................... 41 9 Az 5. fejezet feladatainak a megoldsa ....................................................... 419 Vlasz az 1. krdsre .................................................. ...................................... ...... 41 9 Vlasz a 2. krdsre ................................................................................................ 420 Vlasz a 3. krdsre ................................................................................................ 420 A 6. fejezet feladatainak a megoldsa ......................................................... 420 Vlasz az 1. krdsre ......................... ..................................................................... 420 Vlasz a 2. krdsre ............ .................................................................................... 420 A 7. fejezet feladatainak a megoldsa ......................................................... 421 Vlasz az 1. krdsre .............................................................................................. 421 Vlasz a 2. krdsre ................................................................................................ 421 Vlasz a 3. krdsre ................................................................................................ 421 A 8. fejezet feladatainak a megoldsa ......................................................... 422 Vlasz az 1. krdsre .............................................................................................. 422 A 9. fejezet feladatainak a megoldsa ......................................................... 427 Vlasz az 1. krdsre ......................................................................................... ..... 427 Vlasz a 2. krdsre .................................. ................................ ,............................. 428xii

Tartalomjegyzk

A 10. fejezet feladatainak a megoldsa ... ........ ..... ..... ............. ......... ............. 429Vlasz az 1. krdsre .............................................................................................. 429 Vlasz a 2. krdsre ................................................................................................ 429 Vlasz a 3. krdsre ................................................................................................ 429

A 11. fejezet feladatainak a megoldsa ........ .. ............................ .......... .... .... 430Vlasz az 1. krdsre ...... ........................................................................................ 430 Vlasz a 2. krdsre .......... ...................................................................................... 430 Vlasz a 3. krdsre ................................................................................................ 430

A 12. fejezet feladatainak a megoldsa .. ... .. ...... ........ .................... .. ...... ....... 430Vlasz az 1. krdsre .............................................................................................. 430 Vlasz a 2. krdsre ................................................................................................ 431 Vlasz a 3. krdsre .............................................................................................. .. 431

A 13. fejezet feladatainak a megoldsa ......... ... ..... .................... ................... 431V l asz az 1. krdsre .............................................................................................. 431 Vlasz a 2. krdsre ............................ ........ ,........................................................... 432 Vlasz a 3. krdsre ................................................................................................ 432

A 14. fejezet feladatainak a megoldsa .... .. ............................................. .. ... 432Vlasz az 1. krdsre .............................................................................................. 432 Vlasz a 2. krdsre .........., ..................................................................................... 432 Vlasz a 3. krdsre .................................................... ............................................ 433

A 15. fejezet feladatainak a megoldsa .............................................. .. ... ..... 433Vlasz az 1. krdsre ., ............... ............................................................................. 433 Vlasz a 2. krdsre .............................................. .................................................. 433 Vlasz a 3. krdsre ................................................................................................ 433

A 16. fejezet feladatainak a m egoldsa ............................................... ......... 433Vlasz az 1. krdsre .................................................... ., ...... .................................. 433 Vlasz a 2. krdsre ............................................................................ ., .................. 434 Vlasz a 3. krdsre ................................................................................................ 434

A 17. fejezet feladatainak a megoldsa ...... .... .. ...... ... .. ..... ...... ..... ........ ...... .. .434Vlasz az 1. krdsre ....................... ......................................... ., ........................ .... 434 Vlasz a 2. krdsre ................................................................................................ 434 Vlasz a 3. krdsre ........................................ ............................................ ., .......... 434

B fggelk: Az Xcode hasznlata ............................... 43 5Az Xcode elindtsa ................... ... ......... ... .. ... ..... ... .. .. ...... ... .. .. .. .... ... ... .. ...... . 435

Tmogatott projekttpusok .................................................................................... 436 A Toolbar szemlyre szabsa ............ .................................................................... 439 Code Sense .............................................................................................................. 439 Az alkalmazs futtatsa .......................................................................................... 441

xiii

Tartalomjegyzk

H ibakeress az alkalmazsokban ............................................................... 442Hiba ......................... ................................................................................................. 442 Figyelmeztetsek ..................................... ................................................................ 444 Trspontok bellitsa .................................................................. ............ ...... ....... 446 Az NSLog hasznlata ............................................................................................. 448 D okumentcik ...................................................................................................... 449 Research Assistant (kutatsi segd) ...................................................................... 449

C fggelk: Az Interface Builder hasznlata ................. 451A:z xib ablak ................................................................................................. 451 A nzet m egtervezse .................................................................................. 452 A:z Inspector ablak ....................................................................................... 454Az Attributes lnspector ablaktbla ....................................................................... 455 A Connections Inspector ablak .............................................. .............................. 456 A Size lnspector ablak ................................ ........................................ .................. . 456 Az Iden ti ty Inspector ablak ................................................................................... 457

Library (knyvtr) ........................................................................................ 457 Kivezetsek smvele tek ............................. ...............................................

458

Kivezetsek s mveletek ltrehozsa ................................................................. 458 Kivezetsek s mveletek csatlakoztatsa ........................................................... 461 1. mdszer .................................................... .............................. ....................... 461 2. mdszer ............................................. ................... .......................... ............... 462

D fggelk: Objective-C gyorstalpal ......................... 465Direktvk ................................................................................ .................... 465 Osztlyok ..................................................................................................... 466@interface .......................... ................................................................. .................... 466 @implementation ............................................ ....................................................... 467 @class .............................................................................................. ....................... ,467 Osztly pldnyostsa ........................................................................................... 469 Mezk ....................................................................................................................... 470 Hozzfrsi jogosultsgok ..................................................................................... 470 Metdusok ............................................................................................................... 471 zenetklds (metdusok hvsa) ................... ..................................................... 473 Tulajdonsgok ......................................... ..................................... ........................... 475 lnicializtorok. ............................... .......................................................................... 478

xiv

Tartalomjegyzk

Memriakezels ........................................................................................... 481 Referenciaszmlls ................................................................................................ 481 alloc .................... .. .............................................................................................. 481 new ..................................................................................................................... 482 retain ................................................................................ ,................................. 482 release ................................................................................................................. 483 Knyelmi fggvnyek s az a utorelease ........................................................ 485 A utorelease Po ol .............................................................................................. 487 dealloc ................................................................................................................ 487 Memriakezelsi tippek .................... ............................................................... 488 Protokollok ................................................................................................... 489 Deleglt .............................................................. ...................................................... 490 Szelektorok ................................................................................................... 492 Kategrik .................................................. .................................................. 493

E fggelk: Tesztels konkrt iPhone-on vagy i Pod Touchen .. ...................................... 495Regisztrls az iPhonefejleszti

programra ............................................... 495

Az Xcode ellnditsa ..................................................................................... 496Tanstvny-alrsi krelem ltrehozsa ................................................... 497 Bejelentkezs az iPhonefejleszti

program portljra ............................... 499

Trgymutat ........................................................ 511

XV

A szerzrlWei-Meng Lee a Developer Learning Solutions (www.learn2develop.net) technolgusa s alaptja. A technolgiai cg szakterlete a Microsoft s Mac OS X technolgik gyakorlati kpzseinek fejlesztse. Wei-Meng a Wrox s O'Reilly kiadk hrneves szerzje . Wei-Meng az iPhone programozsi kurzust elszr Szingaprban indtotta el, s azta rengeteg pozitv visszajelzst kapott. Az iPhone programozsi kpzs gyakorlati megkzeltsvel a tma sokkal knnyebben elsajtthat, mint elmleti knyvek, oktatsi anyagok vagy az Apple-dokumentci bngszsvel. A szerzvel a [email protected] e-mail cmen lehet felvenni a kapcsolatot.

Ksznetnyi IvnitsEgy knyv megrsa nndig nagy elktelezettsget jelent. Klnsen igaz ez az iPhoneprogtamozsrl szl munka megrsra. A knyv vgl elkszlt, s szeretnm megksznni mindazok segtsgt, aki ezt lehetv tettk. Elszr is szeretnk ksznetet mondani Scott Meyersnek, aki hitt bennem, arnikor leszerzdtetett. Remlem, nem okoztam neki csaldst. Ksznet jr Ami Sullivannek, a szerkesztmnek, az segtsge nlkl a knyvet nem fejezhettem volna be. rs kzben lefoglaltak az iPhone-kurzusok, m a kpzsek szneteiben Ami folyamatosan rsra buzdtott. Ragaszkodott hozz, hogy betartsam a szigor hatridket, de nagyon megrt volt, ha kicsit megcssztak a dolgok. Nagyra rtkelem irntam tanstott trelmt, nlkle az olvask most nem tarthatnk kezkben ezt a knyvet. szinte ksznettel tartozom ezrt. Vgl, de nem utolssorban szeretnk ksznetet mondani szleirnnek s felesgemnek, Sze W nak a nekem nyjtott tmogatsrt. nzetlenl alaktottk letket az n beosztsomnak megfelelen, arnikor a kziraton dolgoztam. Felesgem hossz jszakkon t virrasztott mellettem, mikzben mindent flretve dolgoztam, hogy betartsam a hatridket. Ezrt neki s aszleimnek azt kell mondanom: szeretlek benneteket. Utolsknt ksznet illeti szeretette mlt kutynkat, Ookiit, mert mindvgig mellettem maradt, noha fogalma sem volt, hogy mirt tm llandan a billentyzetet.

BevezetsAz iPhone SDK-t hivatalosan 2008. mrcius 6-n az Apple Town Hallban egy megbeszlsen jelentettk be. Kezdetben az iPhone-fejlesztst a legnagyobb titokban tartottk, ugyanis az Apple titoktartsi szerzdst (Non-Disclosure Agreement, NDA) kttt azokkal a fejlesztkkel, akik letltttk az SDK-t. Tilos volt brkinek nyilvnosan beszlnie az SDK-rl s a hozz tartoz programozi interfszekrl (API-krl). Az Apple felteheten az SDK stabilitsa rdekben krte mindezt. A fejlesztk rszrl azonban rthet felhborodst vltott ki, hiszen gy nem tehettk fel krdseiket nyilvnos frumokon, s szksg esetn nem kaphattak gyors segtsget. Emellett knyvek sem szlethettek, s tanfolyamokat sem szervezhettek a tmrl. Az iPhone SDK esetn az Objective-C programozsi nyelv bevezetse sem segtett, ugyanis a nyelv elsajttsra idt kell sznni azoknak a fejlesztknek, akik korbban javarszt a fsodorba tartoz nyelvekkel dolgoztak, mint a Java, a C++, a C# vagy a VB.NET. A klvilg nyomsnak engedve az Apple vgl 2008 vgn feloldotta a titoktartsi ktelezettsget. A fejlesztk rmmel fogadtk a vltozs hrt, noha ez kiss kslekedett. A tmrl szl vitafrumok mg aznap jjel ltrejttek, az iPhone-rl szl weboldalak pedig gombamd szaporodni kezdtek. Br az iPhone-fejlesztssel kapcsolatban szmos oldal s frum ltezik, egy akadlyt nem sikerlt teljesen elhrtani: az elindulshoz befektetend tanuls mg mindig jelents kihvsnak szmt. Sok fejleszt kzd kezdetekben az Xcode s az Interface Builder hasznlatval. Egyszerre kell megbirkzni az Objective-C sszetett szintaktikjval, s folyamatosan fejben kell tartani, hogy melyik objektumot szabadtsuk fel, s melyiket nem szabad. Ez a knyv ennek az rnek a kitltsre szletett. Amikor az iPhone-fejlesztsrl kezdtem tanulni, ugyanazon az ton mentem vgig, amint a legtbb iPhone-fejleszt: rjunk egy "Hell, vilg" alkalmazst, kzdjnk az Interface Builderrel, prbljuk meg megrteni, rnit is csinl a kd, majd ismteljk meg az egsz folyamatot. Tl sokat bajldtam az elemvezrl koncepcijval is, s nehezen rtettem meg, rnirt is kell ezt hasznlnom, ha egyszeren meg akarok jelenteni egy elemet. A Windows Mobile s az Android kapcsn szerzett fejleszti htterem nem sokat rt, gy a munkt nullrl kellett elkezdenem. Ez a knyv azrt jtt ltre, hogy a kezd iPhone-fejlesztk munkjt minl knynyebb tegye. A klnbz tmkat gy trgyalja, hogy progresszverr lehessen belle tanulni anlkl, hogy elvesznnk a rszletekben. Azt vallom, hogy a legjobban gy tanulunk meg valamit, ha kzben csinljuk, ezrt van minden fejezetben szmos gyakorlat, amelyek elszr megmutatjk, hogy hogyan ptsnk fel valamit, majd bemutatjk, hogyan is mkdik a dolog.

BevezetsBr az iPhone-programozs hatalmas tmakrt lel fel, ezzel a knyvvel az a f clom, hogy az olvas az alapoktl indulva megrtse az SDK mgtt rejl architektrt, s tisztn lssa, hogy a dolgok mirt gy mkdnek, ahogy. Nem szeretnk azonban az iPhone-programozsrl mindent bemutatni. m biztos vagyok benne, hogy a fejezetek elolvassa (s a gyakorlatok elvgzse) kell tudssal vrtezi fel az olvast az iPhoneprogamozs kilvsainak a megoldshoz.

Kinek szl ez a knyv?A knyv elssorban a kezd iPhone-fejlesztkenk szl, akik szeremnek elkezdeni az Apple iPhone SDK segtsgvel iPhone-alkalmazsokat fejleszteni. A legjobban akkor hasznos~uk a tudnivalkat, ha van nmi programozsi gyakorlatunk, s legalbb az objektumorientlt programozsi koncepcikat ismerjk. Ha teljesen ismeretlen szmunkra az Objective-C nyelv, lehet, hogy rdemes elszr a D fggelkhez lapozni, amely ttekintst ad errl a nyelvrL A D fggelket emellett gyorsreferenciaknt is hasznlha~uk az egyes fejezetek olvassakor: a gyakorlatok vgrehajtsakor brmikor fellapozhatjuk a szintaxisokat. A fenti mdszerekbl minden bizonnyal mindenki ki tudja vlasztani a szmra legjobbat.

Mivel foglalkozik ez a knyv?A knyv alapveten az iPhone-programozs alapjait rja le az iPhone SDK hasznlatval, mindezt 17 fejezetben s t fggelkben.

1. fejezet. Bevezets az iPhone programozsbaAz iPhone SDK fejlesztsben.klnbz

eszkzeit ismerteti, s bemutatja hasznlatukat az iPhone-

2. fejezet. Az

els

Hello World! alkalmazs megrsa

A Hello World! alkalmazs megrshoz megismerkednk az Xcode-dal s az Interface Builderrel. A f cl az, hogy belekstoljunk a tmba, a tovbbi rszleteket a klnbz rszekkel s komponensekkel kapcsolatban a kvetkez fejezetekben trgyaljuk3. fejezet. Kivezetsek,mveletek

s

nzetvezrlk

Az iPhone-programozs alapjairl, azaz a kivezetsekrl (outlet) s a mveletekrl (action) szl. Megismerkednk azzal, hogy programkd az Interface Builderben hogyan mkdik egytt a kivezetsek s a mveletek rvn a vizulis elemekkel, s mindezek mirt szerves rszei minden iPhone-alkalmazsnak.

xxii

Mivel foglalkozik ez a knyv?

4. fejezet. Az elemek megismerseMegtudha~uk,

hogy a klnbz elemek (View) hasznlatval hogyan pl fel iPhonealkalmazsunk felhasznli fellete (user interface, UI). Megnzzk, hogyan manipulljuk alkalmazsunk felhasznl fellett, illetve hogy mi az elemek bels trolsnak a mdja.billentyzetrl

5. fejezet. Bevitel a

Megtudjuk, hogyan bnjunk a virtulis billentyzettel az iPhone-unkon, s szksg esetn hogyan rejtsk el a billentyzetet, illetve hogyan biztostha~uk azt, hogy az elemeket ne blokkolja a megjelen billentyzet. 6. fejezet. Akperny

forgatsa

Megtudha~uk,

hogy hogyan rendezzk jra alkalmazsunk felhasznli fellett az eszkz elforgatsakor. Megismerhe~k a klnfle esemnyeket, amelyek ilyenkor bekvetkeznek. Azt is megtudhatjuk, hogyan szorthat r az alkalmazsunk egy bizonyos kpernytjols hasznlatra.Elemvezrlk

7. fejezet.

Vlaszt kapunk arra, hogy hogyan hozhatunk ltre tbbfle elemet hasznl alkalmazst. Megvizsgljuk, hogyan ptsnk iPhone-alkalmazst ablakalap alkalmazssablonnal. 8. fejezet. Eszkzsv- s navigcis alkalmazsok Ez a rsz azt mutatja be, hogyan hozzunk ltre eszkzsv- s a navigcis alkalmazsokat az SDK-ban tallhat sablonokkal. Ezekkel fejlett tbbnzetes alkalmazsokat valsthatunk meg. 9. fejezet. Segdprogramok Kiderl, hogyan hozhatunk ltre egy jabb tpus alkalmazst az iPhone-ban: a segdprogramokat. 10. fejezet. A Tablenzet hasznlataFelfedezhe~k

a leghatkonyabb elemet az iPhone SDK-ban, amelyet leggyakrabban adatsorok megjelentsre hasznlunk. Ebben a fejezetben azt is megvizsgljuk, hogyan alkalmazzunk keressi lehetsgeket a Table nzethez.

11. fejezet. Alkalmazsbelltsok Hasznlatukkal megrizhetk az alkalmazsok belltsai, gy az iPhone-ban s az iPhone Touchban tallhat Settings alkalmazssal hozzfrhetnk az alkalmazsunkhoz kapcsold belltsokhoz.

xxiii

Bevezets12. fejezet. FjlkezelsKiderl, hogyan rizhetk meg alkalmazsunk adatai az adatok fjlokba mentsvel a sandbox knyvtrban. Azt is megismerhe~k, hogyan frhetnk hozz a klnbz mappkhoz alkalmazsunk sandboxban.

13. fejezet. Adatbzis-trols az SQLite3 hasznlatvalA begyazott SQLite3-adatbzisknyvtr hasznlatt ismerjk meg adataink trolsra.

14. fejezet. Tbbrintses alkalmazsok programozsaVlaszt kapunk arra, hogyan hasznlhatjuk iPhone-alkalmazsunkban a tbbrintses lehetsgeket, tovbb hogyan hasznljuk a klnbz gesztusokat, pldul a hres "csippents" -t (pinching).

15. fejezet. Egyszer animcikEz a fejezet ttekinti azokat az egyszer technikkat, amelyekkel egyszer animcikat hasznlhatunk az iPhone-ban. Azt is elsajtthatjuk, hogy mely affintranszformcikat tmogaqa az iPhone SD K.

16. fejezet. A beptett alkalmazsok elrseMegnzzk, milyen klnb z mdokon frhetnk hozz iPhone-unk beptett alkalmazsaihoz, pldul a Photo Libraryhez, a Contactshoz stb. Azt is megismerhe~k, hogy alkalmazsainkon bell hogyan hvhatunk meg beptett alkalmazsokat, pldul a Mailt vagy a Safarit.

17. fejezet. Hozzfrs a hardverhezMegvizsgljuk, hogyan frhetnk hozz iP hone-unk hardvereihez, pldul a gyorsulsmrhz, valamint hogyan hatrozzuk meg fldrajzi adatainkat a Core Location segitsgvel.

A fggelk. A gyakorlatok megoldsaiAz 1. fejezet kivtelvel a fejezetek vgn tallhat feladatok megoldst tartalmazza.

B fggelk. Az Xcode hasznlataGyors ttekintst nyjt az XCode szmos szolgltatsrl.

C fggelk. Az Interface Bullder hasznlatattekinti az Interface Builder szmos szolgltatst.

D fggelk. Objective-C gyorstalpalVillmtanfolyam az O bj ective-C hasznlatrl. A programnyelvvel most is m e rked k szr ezt a fejezete t olvassk el.el

E fggelk. Tesztels konkrt iPhone-on vagyiPod TouchonVlaszt kapunk arra, hogy hogyan tesztelhetnk egy alkalmazst egy valdi eszkzn.

xxiv

Hogyan pl fel ez a knyv?

Hogyan pl fel ez a knyv?A knyv az iPhone-programozs elsajtsnak feladatt szmos kisebb rszre bon~a, gy minden tmakrt nyugodtan vgiggondolhatunk, neltt elmlyednnk a kvetkez ben. Emellett van nhny fejezet, amely a korbbi fejezetekben mr rintett tmkat is trgyal. Ennek az az oka, hogy az Xcode-ban s az Interface Builderben nem csak egyflekppen hajthatjuk vgre ugyanazt a technikt, gy tbbflt is elsajthatunk az iPhone-alkalmazsok fejlesztshez. Ha teljesen kezdk vagyunk az iPhone-programozsban, ajnlatos a tanulst az 1. s 2. fejezettel kezdeni. Ha rreztnk a dolgok zre, az ppen hasznlt eszkzk s nyelv alaposabb megismershez lapozzunk a fggelkekhez, majd tovbblphetnk a 3. fejezetre, s fokozatosan elmlyedhetnk a haladknak szl rszekben. A knyv jellemzje az, hogy a mintaprogramkdok minden fejezetben fggetlenek az elzekben szereplktl. gy szabadon olvashatjuk a rninket rdekl fejezeteket, s nekilthatunk az aktulis gyakorlatnak.

Mi szksges a knyv hasznlathoz?A knyvben tallhat legtbb plda jl fut az iPhone Simulatoron (amely az iPhone SDK rsze). A hardverekhez (pldul a karnerhoz s a gyorsulsmrhz) is hozzfr alkalmazsok egy valeli iPhone-t vagy iPhone Touchot ignyelnek. Az E fggelk bemuta~a, hogyan tesztelhe~k alkalmazsunkat egy valeli eszkzn. A telefonfunkcihoz is hozzfr alkalmazsokhoz egy iPhone-ra lesz szksg (az iPod Touchban nincs beptett telefon). ltalnossgban ahhoz, hogy a legtbbet hozzuk ki ebbl a knyvbl, nem szksges egy valeli iPhone vagy iPod Touch (br ezek hatrozottan fontosak a tesztelshez, ha azt tervezzk, hogy telepteni szeretnnk alkalmazsunkat az AppStore-ra is).

JellsekA knyvben val eligazods megknnytsre szmos jellst alkalmazunk.Ezek vgrehajtand gyakorlatok vagy pldk.

XXV

Bevezets

Fejezetenknt egy vagy tbb gyakorlatot tallunk, amelyeket a szvegben rdemes vgrehajtani. 1. ltalban nhny szmozott lpsbl llnak. 2. Kvessk vgig a lpseket sajt projektfjljainkkal.

elre

haladva

Hogyan

mkdik?

A begpelt programkdot minden gyakorlat utn rszletesen megmagyarzzuk

Figyelmeztets Az ehhez hasonl szvegdobozok a krnyez szveghez kapcsold, fontos, megjegyzend informcit tartalmaznak.

Megjegyzs A megjegyzsek, tippek, javaslatok, trkkk s az aktulis tmtl kicsit eltr informcik gy nznek ki.

A szvegben tallhat egyb jellsek Az j kifejezsek s fontos szavak emelve. Abillentykombincik els elfordulsukkor dlt betvel

vannak ki-

a

kvetkezkppen

nznek ki: Control-R.kvetkezkppen

A fjlnevek, az URL-ek s a programkd a szvegben a pelnek: persistence.properties. A programkd ktflekppen szerepelhet:

szere-

Kiemels nlkli monofont bettpust hasznlunk a legtbb pldakdban. Flkvrrel emeljk ki azokat a kdrszleteket, amelyek a trgyalt tmhoz szerosan kapcsoldnak.

ForrskdAhogy a knyvben haladva sorra vgrehajtjuk a gyakorlatokat, megvlasztha~uk, hogy minden programkdot manulisan begpelnk, vagy a knyvhz kapott forrskdfjlokat hasznljuk. A knyvben hasznlt valamennyi forrskd letlthet a WN-N. wrox. com cmrL A forrskdok kztt egyszeren keressk meg a knyv cmt (a Keress [Search] doboz

xxvi

Hibajegyzk

vagy az egyik cmlista hasznlatval), majd a knyvhz tartoz valamennyi forrskd elrshez a knyv rszletei oldalon kattintsunk a Download Code (forrskd letltse) hivatkozsra. A weboldalon is megtallhat forrskdokat a kvetkez ikon jelzi:A listk a fjlnevet a cmben tartalma~k. Ha csak egy kdrisifetrrl van sz, a fjlnevet egy o!Jan fomskdmegjegyzsben talljuk meg, mint pldul ez

Megjegyzs Mivel szmos knyvnek van hasonl cme, taln egyszerbb a keresst az ISBN szm alapjn vgrehajtani : a knyv ISBN szma 978-0-47050097-2.

Letlts utn tmrtsk ki a programkdot. Azt is megtehetjk, hogy ehhez a knyvhz s ms knyvekhez letlthet programkdokrt a f Wrox programkd-letltsi oldalra megynk a www.wrox.com/dynamic/books/download.aspx cmen.

HibajegyzkMindent megtettnk, hogy a szveg s a programkclak hibtlanak legyenek. Ugyanakkor senki sem tkletes. Ha brmelyik knyvnkben hibt tall az olvas (pldul helyesrsi hibt vagy egy hibs programkddarabot), hlsak volnnk a visszajelzsrt. A hibajegyzk bekldsvel a tbbi olvast akr tbbrnyi frusztrcitl is megmenthetjk, illetve hozzjrulhatunk a mg magasabb sznvonal nformcik kzlshez. A knyv hibajegyzkhez a www.wrox.com oldalon a Search dobozzal jutunk, vagy az egyik cmlistban keressk meg a knyv cmt. Majd a knyv rszleteit tartalmaz oldalon kattintsunk a Book Errata hivatkozsra. Itt megnzhetjk a knyvhz berkezett s a Wrox szerkeszti ltal bekldtt sszes hibt. Az sszes knyv hibalistjhoz tartoz hivatkozsokat is tartalmaz teljes knyvlista ugyancsak elrhet a www. wrox. com/mi scpages/bookl i st. shtml cmen. Ha egy hibt nem tallunk a knyv hibajegyzkben, ezt www .wrox .com/contact/techsupport. shtml oldalon tallhat fulap kitltsvel jelezhetjk. Ezutn a jelzst ellenriz ve, ha a hiba valsnak bizonyul, egy bejegyzs kerl a knyv hibajegyzk oldalra, s egyttal a hibt a knyv tovbbi kiadsaiban is javtjuk.

xxvii

Bevezets

p 2 p. wrox.comA szerzkkel s a tbbi olvasval a p 2 p. wro x. com cmen elrhet P2P frumokon lehet kapcsolatba lpni. Ezek a frumok egy webalap rendszer rszei, amellyel a Wrox knyveivel s technolgiival kapcsolatos zeneteket tehetnk kzz, illetve rtekezhetnk ms olvaskkal vagy a technolgia tbbi hasznljval. A frumokon e-mail cmnkkel fel is iratkozhatunk a minket rdekl tmkra. gy rtestst kapunk, ha j hozzszls rkezik az adott tmhoz. A Wrox szerzi, szerkeszti, a tma egyb szakrti s az olvask egyarnt jelen vannak ezek a frumokon. A http: 1/p 2 p. wrox . com cmen szmos klnbz frum tallhat, amelyek segtenek az olvasnak nemcsak ennek a knyvnek a feldolgozsban, hanem sajt alkalmazsai fejlesztsben is. A csatlakozshoz az albbiakat kell tenni: 1. Ap2p. wrox. com

cmen kattintsunk a Register (regisztrci) hivatkozsra.

2. A felhasznlsi felttelek elolvassa utna kattintsunk az Agree (elfogads) feliratra. 3. Ha kitltttk a csatlakozshoz a ktelez, illetve az opcionlisan megadhat informcikat, kattintsunk a Submit (beklds) feliratra. 4. Fikunk megerstshez s a csatlakozs folyamatnak befejezshez e-mailben kapjuk meg a tudnivalkat.

Megjegyzs A frumokra kldtt zeneteket a P2P-hez csatlakozs nlkl is elolvashatjuk, m sajt zenetet kldeni csak csatlakozs utn tudunk.

A frumhoz csatlakozva teht zeneteket tehetnk kzz, s a msokira is reaglhatunk. Az zeneteket az interneten brmikor elolvashatjuk. Ha egy adott frumrl szetetnnk az zeneteket e-mailen is megkapni, kattintsunk a frumlistban a frum cme mellett a Subscribe to this Forum ikonra. A Wrox P2P hasznlatval kapcsolatos bvebb informcirt, a frum szaftvernek mkdsrl szl krdsekrt s vlaszokrt, valamint kifejezetten a P2P-rl s a Wrox knyveirl szl szmos egyb gyakori krdsrt olvassuk el a P2P gyakran idzett krdseit (FAQ). A gyakran idzett krdsek brmelyik P2P oldal FAQ-hivatkozsra kattintva elrhetk.

xxviii

~~~:~:.,-~~ ......

...;:

RSZ

Bevezets1. Bevezets az iPhone programozsba ................... 3 2. Azels

Hello World! alkalmazs megrsa .......... 23mveletek

3. Kivezetsek,

s

nzetvezrlk

............ 41

4. Az elemek megismerse ....................................... 75 5. Bevitel a 6. Abillentyzetrl.. ..................................... 119

kperny

forgatsa .......................................... 145

Bevezets az iPhone programozsbaA FEJEZET FBB RSZEl A KVETKEZK: Hogyan szerezhetjk be az iPhone SDK-t? Milyen komponenseket tartalmaz az iPhone SDK? Milyen funkcikkal rendelkeznek a Builder, az iPhone Simulator? Mire kpes az iPhone Simulator? Hogyan pl fel az iPhone OS? Milyen keretrendszerei vannak az iPhone SDK-nak? Mik az iPhone jellegzetessgei s korltai?fejleszteszkzk:

az Xcode, az Interface

Ismerkedjnk meg az iPhone-programozs vilgval. Az, hogy kzbe vettk ezt a knyvet, egyben azt jelenti, hogy rdekel bennnket az iPhone-alkalmazsok fejlesztse, s csadakozni szeretnnk ahhoz a tbb tzezer fejleszthz, akiknek az alkalmazsai mr megtallhatk az AppStore-ban. A rgi knai monds gy tar~a : "a feladatod elvgzshez elszr fend meg a szerszmaidat". A sikeres programozshoz elszr is a felhasznlt eszkzket kell megismernnk. Ez az iPhone-alkalmazsok programozsra klnsen igaz - j pr eszkzt meg kell tapasztalnunk ahhoz, hogy egyltaln elkezdhessk. gy ennek a fejezetnek az a clja, hogy bemutassa azokat a klnbz eszkzket, amelyekre a fejlesztshez szksgnk van.

1. fejezet: Bevezets az iPhone programozsba

Az iPhone SOK beszerzseAhhoz, hogy iPhone-ra vagy iPod Touchra fejleszthessnk, elszr regisztrlt iPhone-fejlesztnek kell jelentkeznk a ht tp: l l de ve l ope r. ap pl e. com/i phone/ program/start/ reg i st e r 1 webhelyen. A regisztrci ingyenes, s hozzfrst biztost az iPhone SDK-hoz, valamint a kezdshez szksges ms hasznos eszkzkhz. A regisztrci utn letlthetjk az iPhone SDK-t (lsd az 1.1. brt).

New Project (fjl )o> j projekt) menpontra. A 2.2. bra bemuta~a, hogy milyen projekteket hozhatunk ltre az Xcode-dal. Kt alapkategria ltezik: iPhone OS alkalmazsok s Mac OS X alkalmazsok. rtelemszeren kattintsunk az iPhone OS alatt tallhat Applicationra, hogy az iPhone-alkalmazsaink fejlesztshez elrhet sablonokat megnzhessk. Tbbfle iPhone-alkalmazst hozhatnnk ltre, most vlasszuk a View-Based (nzetalap) alkalmazssablont, s kattintsunk a Choose (kivlaszt) gombra.

24

Ismerkeds az Xcode-dal

A

New Proiect

Choose a template for you r new project:

Navi~uon-b.uedOo~~Q

Core Appliauon

Opt_nGL f5 Application

Ti! b hr Applicahon

Utihty Applit.Jtton

Vtew-based AppliuHon

Aut~tor

Action

Bund leComm.nd Une UttlltyDyn~c

Oe scriptton This templatt prOVJdts a surung polnt for n apphuoon tN-t uus ;a MVlg~eton controller tt preMdes a user lnttrfue configured wtth a nmgatlon controller to dtsplav il hst of tttms.

Ubnty

Frameworit

JavKe:mel EKtensiOn S'anda.rd Apple Plug-ins

Static Ubro1ry Other

(

Cancel ) ( Choose ... )

2.2. bra

Megjegyzs A kvetkez fejezetek olyan, ms iPhone-alkalmazsok ltrehozst mutatjk be, mint a Utility Application, a Tab Bar (eszkzsv), s a Navigation (navigci) alkalmazs.

l

A projektet nevezzk Helloworl d-nek, majd kattintsunk a Save-re (ments). Az Xcode ekkor tovbblp, s ltrehozza az ltalunk kivlasztott sablonhoz a projektet. A 2.3. bra bemutatja a projektnkhz tartoz klnbz fjlokat s mappkat. Az Xcode bal oldali paneljn lthatk a projektben tallhat csoportosrsok A fjlok s a mappk megjelentshez brmelyik csoportot kibonthatjuk Az Xcode jobb oldali paneljn azok a csoporton vagy mappn belli fjlok jelennek meg, amelyeket a bal oldalon kivlasztottunk. Egy adott fjl szerkesztshez vlasszuk ki a fjlt, hogy a jobb oldali panel aljn tallhat szerkeszt megnyithassa. Ha a szerkesztshez kln ablakot szeretnnk nyitni, dupla kattintssal nyissuk meg a szerkesztend fjlt.

25

2. fejezet: Az

els

Hello World! alkalmazs megrsa

Cb:ssu~r Sourcu

,.4

oWo

.

Re:sourcesProducts

rr~rks

8 Targeu..,....J Exe:cu~H

~,.

..,p

HelloWorld_Prdhc.pc_httelloWorldAppDelegate .h tklloWortdAppDeleg;atun HtlloWot1dV1 twController. h

HelloWondViewControllu.m

Etrors ~d W.rnmgs

find Ruull5 ~l;SiooluMrlu ~ SCM

HelloWor1dVie'NControlle "' " ' ",

=======No Editor

e

Project Symbots

.lmplernent.Uon ri lu. . . Nilifiles

2.3. bra

A kvetkez, gyakorlati rszbl megtanulhatjuk, hogyan szabhatjuk testre az Xcode eszkztrt.Az Xcode eszkztrnak testre szabsaA [Hello World.~} letoJthet a Wrox.com-nJL

Az Xcode fels rsze az eszkztrterlet. Itt tallhatjuk meg azokat az eszkztrmenelemeket, amelyeket a fejleszts sorn ltalban hasznlunk. Az ilyen elemek hozzadshoz az eszkztr testre szabhat.

1. Prbakppen vlasszuk a View )l> Customize Toolbar (nzet )l> eszkztr testre szabsa) lehetsget. Egy legrdl ablak jelenik meg Osd a 2.4. brt).2. Ha j elemet szeretnnk az eszkztrra helyezni, egyszeren fogjuk meg, s hzzuk oda. A 2.5. bra az eszkztrhoz adott ,,Active SDK" elemet mutatja be. 3. Az ,,Active SDK" elem lehetv teszi, hogy vlaszthassunk az alkalmazsunk valdi kszlkre teleptse s az iPhone Simulatorba helyezse kztt Osd a 2.6. brt).

26

Ismerkeds az Xcode-dal

Drilg your favorite ltems lnto the toolbar ...

Bu1ld

Go

De..activate:

CH:o~n

Ali

Build

~nd

Go

Bulld ;and Co

CQ.ss Browser

'o

""Build Find

[!::JCtunT~sks

Action

lulkl Woarning.s

6J..

~nd

Elron

Oe bugger

.!!...Breoakpolnu

SCM

Ittfilctor

SniipShots

M.lkt SrQpshot

Help

RueMch Assistant

Ovtrvtew

Actwe Tilrget

Acuve Arch1tecture

Acttvt SOK

Actiw Butld Configuranon

,

Actwe Exec::ut- Libraryra [eszkzk )>- knyvtr]). A 3.9. bra a Library ablak klnbz, a View ablakban hasznlhat elemeit mutatja.

48

A kd s a felhasznli fellet

egyttmkdsnek

az alapjai

3.8. bra

View ControllerU1Vte....Contr(... ferUbro~~

PrOYldu view - ma~gemer.t funct,onllitty for too rbars. naveg.n 011 bars, and ~pl,catsonv.ews. The UIVinvC:ornroller cl:-,'=:::~-:::--.

~:_:~~-

...._, , "-..::

e ) RSZi Phone-alkalmazsokkszitse7.Elemvezrlk ......................................................

163

8. Eszkzsv- s navigcis alkalmazsok ............ 187 9. Segdprogramok ................................................ 215

ElemvezrlkA FEJEZET FBB RSZEl A KVETKEZK: Hogyan ksztsnk ablakalap alkalmazst, majd adjunk hozz manulisan egy elemvezrlt s egy View ablakot? Hogyan hozzunk ltre dinamikusan elemeket futs kzben? Hogyan fzzk egyms utn az elemek esemnyeit az ramkd rvn? Hogyan vltsunk msik elemre futs kzben? Hogyan animljuk az elemvltsokat?esemnykezelvel

a prog-

Eddig egyetlen elemet hasznl alkalmazsokkal foglalkoztunk, vagyis olyan alkalmazsokkal, amelyekben egy elemvezrl van. Az elz fejezetek mind az iPhone SDK-ban tallhat eleroalap alkalmazssablont hasznltk, hiszen ezzel a legegyszerbb elkezdeni az iPhone-programozst. Eleroalap alkalmazsok ltrehozsakor alaprtelmezs szerint egy elemvezrl van (az iPhone SDK rvn viewcontroller nven). A valsgban azonban gyaktan van szksgnk egynl tbb elemvezrlre, amelyek kzl mindegyik egy msik elemet jelent meg eltr informcikkal. A tbbnzetes alkalmazsokta j plda az iPhone-ban gyrilag megtallhat Wearher (idjrs) alkalmazs. A f elem a kivlasztott rgi idjrst mutatja, m a kpernyt elhzsval tovbbi helyszillek idjrst is megnzhetjk. Az i ikonnal pedig ms elemre is vlthatunk, s tovbbi helyeket is megadhatunk. Ebben a fejezetben megvizsgljuk, hogy hogyan hozzunk ltre tbb nzetet az alkalmazsunkban, majd futs kzben hogyan vltsunk programozottan egyikrl a msikra. Megismerjk azt is, hogy az iPhone SDK-ban elrhet beptett animcis mdszerekkel hogyan animljuk az elemvltsokat.

7. fejezet : Elemvezrlk

Ablakalap alkalmazs ltrehozsaAz albbiakban megismerkednk az iPhone SDK-val ltrehozhat alkalmazssablonok msik tipusval, az ablakalap alkalmazssablonnal. Az elemalap alkalmazssablonnal ellenttben az ablakalap alkalmazssablon alaprtelmezs szerint nem tartalmaz elemvezrlt, pusztn az iPhone-alkalmazs vzt foglalja magban, a tbbit pedig a fejlesztre bzza: a sajt elemeket s elemvezrlket magunknak kell hozzadnunk gy az ablakalap alkalmazs j lehetsget nyjt arra, hogy megrtsk az elemvezrlk mkdst, s rtkeljk azt a munkt, amely az elemvezrlk s az XIB fjlok sszekapcsolshoz szksges. Mindenekeltt egy ablakalap alkalmazs megrshoz hajtsuk vgre az albbi gyakorlati rsz utastsait, majd kvetkez lpsknt adjunk hozz egy elemvezrlt. Ehhez s a fejezet tovbbi gyakorlataihoz le kell tltennk a megjellt projektfjlokat.

11@1 Elemvezrl hozzadsa az Interface Builder hasznlatvalA p rogramkd [WinBasedApp.~J a Wrox .comoldalrlletlthet

!!i WinB.ue.dAppAppOelegate.m - W1nBa.sedApp

( -~~~~~!:_-:_~~~l__f?!~~L -~MM Add Files (fjl )> fjl hozzadsa) menpontot. Vlasszuk az urviewcontroller alosztlyelemet, majd kattintsunk a Next gombra. A fjl neve legyen: oe ta i l svi ewcontro ll er. m (ne jelljk be a "Wi th Xib for user interface" lehetsget, mert a kvetkez lpsben manulisan adjuk hozz). 2. Kattintsunk jobb gombbal a Resources mappra, s vlasszuk az Add )> New File menpontot. Vlasszuk a View XIB elemet, s kattintsunk a Next gombra. A XIB fjlt nevezzk el a kvetkezkppen: oetai l svi ew. xi b. 3. Kattintsunk ktszer a oetail svi ew. xi b fjira ahhoz, hogy az Interface Builderrel szerkesszk. Adjuk hozz a View ablakhoz a Label nzetet Qsd a 8.23. brt).

207

8. fejezet: Eszkzsv- s navigcis alkalmazsok

Oetatl.sV1ew,xib

LabelFile's Ov.-ner F1rn Rtsponder

I!IZJ

8.23. bra

4. Adjuk hozz az albbi flkvrrel szedett sorokat a oetailsviewcontroller.hfjlhoz az Xcode-ban: #import @interface Detailsviewcontroller IBOutlet Ullabel *label; NSString *textselected; UIViewcontroller {

@property (nonatomic, retain) Ullabel *label; @property (nonatomic, retain) NSString *textselected; -(id) initWithTextselected:(NSString *) text; @end

5. Az Interface Buliderben a Detai l svi ew. xi b ablakbanClass tulajdonsgt llitsuk akvetkezre:

lv

File's Owner elem

De ta i l svi ewcont ro ll e r.

6. A Control billenty nyomva tartsval hzzuk a File's Owner elemet a Label nzetre, majd vlasszuk a l abe l. lehetsget. Ezzel sszektjk a Label nzetet a l abe l kivezets se!.

208

Navigcialap alkalmazsok 7. A Control billenty n yomva tartsval hzzuk a File's Owner elemet a View nzetre, majd vlasszuk a view lehetsget. Ezzel sszekapcsoljuk a nzetet a nzetvezrlvel:

8. Adjuk hozz az albbi flkvrrel szedett kdot a oe ta i l sviewcontroll er .m fj !hoz:#import "Detailsvi ewcontroller.h " @implementation Detailsviewcontroller @synthesize label; @synthesize textselected; -(id) initWithTextselected:(NSString *) text { self.textselected = text; [label setText:[self textselected]]; return self;

- (voi d)viewoidLoad { [label setText:[self textselected]]; self.title = @"Movie Details"; [super viewoidLoad];

- (void)dealloc { [label release]; [textselected release]; [super dealloc];

9. Adjuk hozz az albbi flkvrrel szedett kdot a Rootviewcontroller.h fjlhoz:#impo rt "DetailsviewController.h" @ interface RootViewcontroller : UITableviewcontroller { oetailsviewcontroller *detailsviewcontroller;

@property (nonatomic, retain) Detailsviewcontroller *detailsviewcontroller; @end 10. Adjuk hozz az albbi flkvrrel szedett kdot a Rootviewcontroller. m fjlhoz: #import "RootViewcontroller.h" @implementation Rootviewcontroller NSMutableArray *listOfMovies; @synthesize detailsviewcontroller;

209

8. fejezet: Eszkzsv s navigcis alkalmazsok

11. Mdostsuk a t ablevi ew: di dse l ectRow AtrndexPath: metdust a flkvrrel szedett programkd alapjn:

ll override to support row selection in the tabl e vi ew . - (void)tableview :(UITableview *)tablevi ew didselectRow AtindexPath: (NSindexPat h *) indexPath {NSUinteger row = [indexPath row]; NSStri ng *rowvalue = [listOfMovies objectAtindex :row]; NSStri ng *message = [[NSStri ng alloc] initwithFormat: @ "You have selected \ "%@\ "", rowvalue] ; //---create an instance of the oetailsviewcontroller--if (self.detailsviewcontroller == nil) oetailsviewcontroller *d [[Detailsviewcontroller alloc] initWithNibName:@"DetailsView" bundle:[NSBundle mainBundle]]; self.detailsviewcontroller = d; [d release];=

}

//---set the movies selected in the method of the ll oetailsviewcontroller---// [self.detailsviewcontroller initwithTextselected:message]; //---Navigate to the details view--[self . navigationcontroller pushviewcontroller : self.detailsviewcontroller animated:YES];

12. Nyom juk meg a Command-R gombokat, hogy az alkalmazst az iPhone Simulatoron teszteljk. Nzzk m eg, mi trtnik, ha m egrintnk egy elem et (lsd a 8.24. brt).

Hogyan

mkdik?

Az elz pldban hozzadtunk egy j XIB fj lt s egy megfelel View Contro ller osztlyt a projekthez. Ezt az j View ablakot hasznljuk arra, hogy megjelentsk a Table nzetet tartalmaz nzetben megrintett ftlm cmt. Ahhoz, hogy ez az ablak t tudja adni a kivlasztott film cmt a rszleteket tartalmaz View ablaknak, ltre kell hoznunk ezen egy tulajdonsgot, mghozz a textselected-et:

@ property (nonatomic , retain) NSString *textSelected; Egyttal ltre kell hoznunk egy i ni twi thTextse l e ct ed: nev metdust is, hogy a kezdemnyez nzet bellthassa a textselect ed tulaj donsg rtkt:

210

Navigcialap alkalmazsok

-(id) initWithTextselected:(NSString *) text { self.textselected = text; [label setText:[self textselected]]; return self;

Tralning Day Remember the Titans John Q.Vou have seiccted "The Bone Collector"'

Ricoehet The Siege Malcolm X Antwone Fisher Courage Under Fire

8.24. bra

Arra, hogy a Table nzetet tartalmaz nzetbl eljussunk a rszletesbe, a tableview: did se l ectRowAtrndexPath: metduson bellj UINavi gat i oneont ro ll er objektum pushviewcont ro ll e r: metdust hasznljuk://---create an instance of the Detailsviewcontroller--if (self.detailsviewcontroller == nil) { Detailsviewcontroller *d = [[Detailsviewcontroller alloc] initWithNibName:@"Detailsview" bundle:[NSBundle mainBundleJ J; self.detailsviewcontroller = d; [d re l eas e] ;

//---set the movies selected in the method of the ll Detailsviewcontroller---// [self.detailsviewcontroller initWithTextselected:message];

211

8. fejezet: Eszkzsv- s navigcis alkalmazsok

//---Navigate to the details view--[self.navigationcontroller pushviewcontroller:self.detailsviewcontroller animated:YES];

Hinyz vissza gombKorbban a Rootviewcontroller.m fjlban llitottuk be a navigcis elemcmta kvetkezkppen:

- (void)viewoidLoad { //---initialize the array--listofMovies; [[NSMutableArray alloc] init]; //---add items--[listofMovies addobject:@"Training oay"]; ll ... //---set the title of the navigation bar--self.navigationitem.title; @"Movies"; [super viewDidLoad];}

agyon gyakori hiba, hogy a fejlesztk elfelejcik bellitani ezt a cmet. Mi trtnik ekkor? A:z. eredmny a 8.25. brn lthat. A gykrnzetnek nincs cme, a rszletes nzeten pedig nincs olyan gomb, amely visszavinne az elz nzetre. Ha azonban megrintjk azt a terletet, ahol a vissza gombnak kellene lennie, mg gy is visszakerlnk az elz nzetre.

Training Day Remember the TitanYou have setectcd "The Bone CollectOf"'

8.25. bra

SSZEFOGLALSEbben a fejezetben megismertnk kt olyan f iPhone-alkalmazstpust, amelyet az SDK tmogat: az eszkzsv-alkalmazsokat s a navigcialap alkalmazsokat. Megvizsgltuk, hogy ez a kt alkalmazstpus hogyan mkdik, gy kpesek lesznk olyan tbbnzetes alkalmazsokat fejleszteni, amelyek ugyangy nznek ki, mint az iPhoneunkon megszakottak

212

Navigcialap alkalmazsok

1. Ksztsnk egy eszkzsv-alkalmazst kt eszkzsvelemmel. Ha a felhasznl meg-

rinti a msoclik eszkzsvelemet, meg kell jelennie a filmek listjnak

A FEJEZET TUDNIVALITmaEszkzsv-alkalmazsok ltrehozsa Annak meghatrozsa, mely nzet tltdik be elszr egy eszkzsv-alkalmazsban Eszkzsvelemek hozzadsa egy eszkzsv-alkalmazshoz

AlapelvekUITabBarcontro ll er hasznlata a megszakott urvi ewcont ro ll e r helyett.

A:z. UITabBarcontro ll er pldnyban felsorolt rendjnek mdostsa.

nzetvezrlk

sor-

Miutn az elem hozzaddott az eszkzsvhoz, ne felejtsk el tlltani a NIB Name tulajdonsgt a projekt egyik XIB fj lj ra. A Class tulajdonsgt is t kell lliranunk egy View Controller osztlyra. Biztostani kell, hogy az sszes nzetvezrl megvalstsa a shoul dAutorotateTointerfaceori entati on: metdust. [self.navigationcontroller pushviewcontroller:self.detailsviewcontroller animated:YES];

A tjolsvltoztats tmogatsa az esz kzsv-alkalmazsokbanavigls msik nzetvezrlre egy navigcialap alkalmazsban

213

SegdprogramokA FEJEZET FBB RSZEl A KVETKEZK: Hogyan fejlessznk segdprogramot (Utility Application) az SDK ltal knlt sablonnal? Hogyan vltsunk nzetet a segdprogramokban? Hogyan alkalmazzunkklnbz

tmeneteket a nzetek vltsakor?

Hogyan adjunk tovbbi nzeteket a segdprogramhoz?

Az elz kt fejezet j nhny olyan alkalmazspust bemutatott, amelyeket iPhone SDK segtsgvelltre tudunk hozni: nzetalap alkalmazsok, navigcialap alkalmazsok s eszkzsv-alkalmazsok. Az iPhone-nal sszefggsben igen elterjed alkalmazspusok mg a segdprogramok (Utility Applications), amelyek egyszer feladatokat hajtanak vgre minimlis felhasznli adatbevitelleL Az iPhone eszkzn megtallhat Weather s Stocks alkalmazs pldul kt ilyen segdprogram. A 9.1 bra a Weather alkalmazst muta~a egy adott vros idjrsnak megjelentsekor. Amikor megrin~k a jobb als sarokban lev kis i ikont, a kperny megvltozik A nzetek vltsa az egyik gyakori jellemzje a segdprogramoknak Az Apple felhasznli fellet iPhone-alkalmazsokra vonatkoz irnyelvei szerint a segdprogramok "egyszer feladatokat hajtanak vgre minimlis felhasznli adatbevitellel". Ezrt egy olyan alkalmazs fejlesztsekor, amelynek informcijhoz a felhasznl gyorsan hozzfr, a segdprogram lenne az idelis keretrendszer. Ilyenek pldul: valutaegysg-vlt, mnkegysg-tvlt, RSS-olvas.

9. fejezet: Segdprogramok.diSGP

"'

4 23 A !o~

00 Done

+

Weather

= = = = =

~ SingaporeBeljlng Vietnam, San Juan

["'

" --

-

Shanghal Callfomla City

-

Talpel City

~~....atl\o(-

:Klwttt1tlv

YAB001

9.1. bra

A kvetkezkben megismerjk, hogyan hozhatunk ltre segdprogramot az iPhone SDK sablon segtsgveL

Segdprogramok kszitseAz iPhone SDK rendelkezik segdprogramok ksztshez alkalmas sablonnal. A sablon hasznlatval minden szksges kd kszen ll a nzetvltshoz. Amikor egy egyszer segdprogramot hozunk ltre, csak az alkalmazsunk logikjra kell koncentrlnunk. Ha egy sszetettebb segdprogramot ksztnk, az elre megrt kd j alap lehet az alkalmazs kiterjesztshez. Elszr ksztsnk SD K sablonnal segdprogramot, s nzzk meg a kvetkez gyakorlati rszben, hogyan mkdik.Segdprogram ltrehozsa

A programkd [UtilityApplication.ifp] a Wrox.com oldalrl tolthel le.

1. Hozzunk ltre egy j segdprogram- (Utility Application) projektet az Xcode se-

gtsgve!, s nevezzk el uti l i t yApp l i cati on-nek.2. Vizsgljuk meg a projekt tartalmt (lsd a 9.2. brt) . Alapveten kt nzettel kell

foglalkoznunk: M ainview. xi b s Fl i ps idevi ew. xi b. A M ainview. xi b a f nzet, amelyet a felhasznlk az alkalmazs betltsekor ltnak. Egy kis i ikont tartalmaz, amely ha rkattintunk, egy msik nzetre, a Fl i ps idevi ew . xi b-re vlt. Min216

Segdprogramok ksztse

den .xib fjl kt fjlt reprezentl: egyik a nzetrt, msik a nzetvezrlrt felels. A Mainview.xib fjl teht egytt jr a Mainview.h s a Mainview.m, valamint a Mainviewcontroller.h s a Mainviewcontroller.m fjlokkal.r;Matchl~~~ch

""' Codt~

A

""

~~ Mu'IV-twh~Mltn~.m~

"'~ ~

~~

MutV.ewC:ontrol&er.h

!"ll M.l.lnVtcwConuol~r-mrlip~tdeV1~

"~

,;1 HlPSKit:Vitw h1111 fllpSfdtVI~W.m

~

~ fltpst.CkV.e9o(;onttotltr.h111l RipSidtVitwControkr.mApplt

ClassesOther SourcesResources

Y

l:j

apple Jpeg

J TableViewExampleVieFrameworks Products

.ciJ MamWindow.xiblf) Tabi- Existing Frameworks (hozzads };>- meglv keretrendszerek) lehets get. Vlasszuk a Frameworks/Medi aP layer. framework elemet.

5. A

kvetkez

headerllomnyt importljuk a PhotoL i braryvi ewcontroll er. h fjlba:

#import #import

6. A

kvetkez

flkvren szedett utasts t szrjuk be a fjlba:

- (void)imagePickercontroller:(UIImagePickercontroller *)picker didFinishPickingMediawithinfo:(NSDictionary *)info { unmage *image; NSURL *mediaurl;

378

A Carnera s a Photo Library elrse

mediaurl = (NSURL *) [info valueForKey:UIImagePickerControllerMediaURL]; if (mediaurl == nil) { image = CUIImage *) [info valueForKey:UIImagePickercontrollerEditedimage]; if (image == nil) { //-- -original image selected--image = (UIImage *) [info valueForKey:UIImagePickercontrolleroriginalimage]; //---display the image--imageview . image =image; //---save the image captured--[self saveimage];}

else{

//---edited image picked--/l--- get the cropping rectangle applied to the image--CGRect rect = [[info valueForKey:UIImagePickerControllercropRect] CGRectvalue ]; //---display the image--imageview.image =image; //---save the image captured--[self saveimage];} }

else{

//---video picked--MPMoviePlayercontroller *player [pl ayer pl a y];}

[[MPMoviePlayercontroller alloc] initwithcontentURL:mediaurl];

//--- hide the Image Picker- -[picker dismissModalviewcontrollerAnimated:YES];

7. Ahhoz, hogy az alkalmazst valdi iPhone-on teszteljk, nyomjuk meg a Command-R gombokat.

Megjegyzs Az E fggelk lerja, hogyan ksztsk el i Phone-unkat a tesztelshez.

379

16. fejezet: A beptett alkalmazsok elrse

8. Koppintsunk a Load Photo Library gombra, gy mr kpeket vagy videkat kszthetnk az iPhone kamerjval. Ha kpet ksztnk, az az alkalmazsunk Document mappjba kerl. Az elksztett viclet a kszlken tallhat mdialejtszval nzhetjk vissza.

Hogyan mkdik?Ebben a gyakorlatban az Image Picker forrstpust mdostottuk a karnerhoz: imagePicker.sourceType ; UIImagePickercontrollersourceTypecamera; Arnikor kpet ksztnk a kamerval, a kp visszakerl az i mag e Pi ckercontro ll er: di d Fi ni shPi c ki ngMedi awi th Info: metdusba, s az ImageView elemerr jelenik meg. Ugyanakkor a kpet mr neknk kell elmentennk a telefonra. Ahhoz, hogy a kpet az alkalmazsunk Document mappjba mentsk, most a fi l e Path: metdust definiltuk: - (NSString *) filePath: (NSString *) fileName { NSArray *paths; NSSearchPathForDirectoriesinDomains( NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDir; [paths objectAtindex:O]; return [documentsDir stringByAppendingPathComponent:fileName];

A saveimage: metdus az ImageView elemen jelenti meg a kpet, majd a filePath: metdussal a MyPi ct u re. png-nek nevezett fjlba menti: - (void) saveimage{ //---get the date from the Imageview--NSData *imageData [NSData dataWithData:UIImagePNGRepresentation(imageview.image)];

//---write the date to file--[imageData writeToFile: [self filePath:@"MyPicture.png"'] atomically:YES];

A videofelvtelek a kszlkre kerlnek, s URL-knt nzhetk vissza. A visszajtszshoz az MPMoviePlayercontroller- a MediaP!ayer keretrendszerben elrhet- osztlyt hasznlhatj uk: //---vi deo picked--MPMoviePlayercontroller *player [player play]; [player release];

[[MPMoviePlayercontroller alloc] initWithcontentURL:mediaurl];

380

A Contacts alkalmazs elrse

A Contacts alkalmazs elrsehasonlan a Contacts is az ltalnosan hasznlt iPhone s iPod Touch gyri alkalmazsainak az egyike Osd a 16.7. brt). A Contacts alkalmazs azoknak a nvjegyeinknek a listjt tartalmazza, amelyeket a kszlknkre elmentettnkAzelzekhez

Ciarence M1ke Edward We1 Meng Lee

. " . .GlL

M

o

v

o

."

16.7. bra

A Photo Libraryhez hasonlan a Contacts alkalmazsban trolt nvjegyekhez is hozzfrhetnk programozottan, gy az alkalmazsunk tmaszkodhat a Contacts alkalmazsra, s a nvjegyadataink trolshoz nem kell sajt adatbzist ltrehoznunk. A kvetkez gyakorlati rszben azt nzzk meg, hogyan frhetnk hozz a Contacts alkalmazshoz, az A ddressBookUI keretrendszerben l v ABPeop l e Pi ckerNavi gat i oneontroller osztly segtsgveL Ehhez le kell tlteni az itt megadott programkdfjlokat.A nvjegy rszleteinek megjelenitseAz [AddressBook.ifp] kdfjl, a Wrox.com-ri letiJlthet.

l. Az Xcode segtsgvel hozzunk ltre View-based Application projektet, s nevezzk el AddressBook-nak

381

16. fejezet: A beptett alkalmazsok elrse2. Jobb gombbal kattintsunk az Xcode Frameworks csoportjra, s vlasszuk az Add );> Existing Frameworks lehetsget.Load Contacis

3. Vlasszuk a Frameworks/ AddressBook.framewerk-t s a Frameworks/AddressBookur. framewor k-t. Ha megjelenik az a krds, hogy hozz akarjuk-e adni a projekthez, nyomjuk meg az Add (hozzads) gombot. 4. Ahhoz, hogy az Interface Builderben szerkesszk, kattintsunk dupln az AddressBookvi ewcontro ll er. xi b fj lra. 5. A View ablakot tltsk fel a Button elemmel (lsd a 16.8. brt) .

6. A

kverkez,

flkvrrel szedett uta16.8. bra

stsokat szrjuk be az AddressBookvi ewcontroller. h fjlba: #import #import #import

@i nterface AddressBookviewcontroller : urviewcontroller {

-(IBAction) btnclicked: (id) sender; @e nd 7. Visszatrve az Interface Builderbe, Control-kattintssal hzzuk a Button elemet a File's Owner elemre, s vlasszuk a btn cl i cked:-et

8. A

kvetkez,

flkvrrel szedett utastsokat szrj uk be az AddressBookvi ewcont-

ro ll e r . m fjlba: #import "AddressBookvi ewcontroll er. h" @i mplementation AddressBookviewcontroller -(IBAction) btnclicked: (id) sender{ ABPeoplePickerNavigationcontroller *picker = [[ABPeoplePickerNavigationcontroller alloc] init] ; picker . peoplePickerDelegate = self; //---display the People Picker---

382

A Contacts alkalmazs elrse [self presentModalviewcontroller:picker animated:YES]; [picker release];}

- (void)peoplePickerNavigationcontrolleroidcancel: (ABPeoplePickerNavigationController *)peoplePicker { //---hide the People Picker--[self dismissModalviewcontrollerAnimated:YES];}

- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationcontroller *)peoplePicker shouldcontinueAfterselectingPerson:(ABRecordRef)person { //---get the First Name--NSString *str = (NSString *)ABRecordcopyvalue(person, kABPersonFirstNameProperty); str = [str stringByAppendingString:@"\n"]; //---get the Last Name--str = [str stringByAppendingstring:(NSString *)ABRecordcopyvalue( person, kABPersonLastNameProperty)]; str = [str stringByAppendingstring:@"\n"]; //---get the Emails--ABMultivalueRef emailinfo ABRecordCopyvalue(person, kABPersonEmailProperty); //---iterate through the emails--for (NSUinteger i=O; i< ABMultivalueGetcount(emailrnfo); i++) { str = [str stringByAppendingstring: (NSString *)ABMultivalueCopyvalueAtindex(emailrnfo, i)]; str = [str stringByAppendingstring:@"\n"];}

//---display the details--UIAlertview *alert = [[UIAlertview alloc] initWithTitle:@"Selected Contact" message:str delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; //---hide the People Picker--[self dismissModalviewcontrollerAnimated:YES]; return NO;}

- (BOOL)peoplePickerNavigationcontroller: (ABPeoplePickerNavigationcontroller *)peoplePicker shouldcontinueAfterselectingPerson:(ABRecordRef)person property:(ABPropertyiD)property

383

16. fejezet: A beptett alkalmazsok elrse identifier:(ABMultivaluerdentifier)identifier { [self dismissModalviewcontrollerAnimated :YES]; return NO;

9. Ha az alkalmazst az iPhone Simulatorban szetetnnk tesztelni, akkor legalbb egy, a kvetkez adatokkal elltott kapcsolat legyen a Contacts alkalmazsban Osd a 16.9. brt): keresztnv, vezetknv, e-mail.

10. Nyomjuk meg a Command-R gombokat, hogy az alkalmazsunkat az iPhone Simulatoron teszteljk A Contacts alkalmazs megnyitshoz koppintsunk a Load Contacts gombra. Ha kivlasztunk egy nvjegyet, a rszletek figyelmeztetelemknt jelennek meg O sd a 16.1 O. brt).16.9. bra

Hogyan

m.kdik?

Az elz szakaszhoz hasonlan, ahol a urrmagePi ckercontro ll er osztly segtsgvel tudtunk fott kivlasztani a Photo Librarybl, az ABPeoplePickerNavigationcontroller osztly segtsgvel ezttal nvjegyeket vlaszthatunk ki a Contacts alkalmazsbL Mieltt az ABPeoplePickerNavigationcontroller osztlyt hasznlnnk, az AddressBook s az Addresssookur keretrendszereket hozz kell adnunk a projektnkhz. Csakgy, mint a urrmagePickercontroller osztlynl, itt is meg kell felelnnk egy specilis protokollnak, a ABPeoplePickerNavigationControl lerDelegate-nek. Miutn a Contacts alkalmazsbl kivlasztortuk a nvjegyet, a kvetkez metdusokat hivhatjuk meg: peoplePickerNavigationcontroller :shouldcontinueAfterselectingPerson: peoplePickerNavigationController:shouldContinueAfterSelectingPerson :property: i denti fi er: peoplePickerNavigationcontrollerDidcancel:

384

A Contacts alkalmazs elrse

Weo -Meng Lee

. . .J

' .GLG

o

.

16.10. bra

A peoplePickerNavigationcontrolleroidcancel : metdus akkor lvdik meg, arnikor anvjegy kivlasztsakor rkoppintunk a Cancel (mgse) gombra. Ha egy kapcsolatra koppintunk r, akkor a peoplePickerNavigationcontroller:shouldcontinueAfterSelectingPerson : metdus lvdik meg. A kivlasztott nvjegy adatai az ABRecordRef tpus shoul dconti nueAfterse l ecti ngPerson: paramterbe vannak begyazva. Ebben a pldban a nvjegy klnfle tulajdonsgait bontottuk ki, s jelentettk meg az Al ertview osztly segtsgveL //--- get the First Name--NSString *str = (NSString *) ABRecordcopyValue ( person , kABPersonFirstNameProperty) ; str = [str stringByAppendingstring :@"\ n"]; //- --get the Last Name--str = [str stringByAppendingString: ( NSString *) ABRecordcopyvalue ( person, kABPersonLastNameProperty)]; str = [str stringByAppendingString: @"\ n"]; //---get the Emails--ABMultiValueRef emailinfo ABRecordcopyvalue(person, kABPersonEmailProperty) ;

385

16. fejezet: A beptett alkalmazsok elrse

//---iterate through the emails--for (NSUinteger i=O; i< ABMultivalueGetcount(emailinfo); i++) { str = [str stringByAppendingString: (NSString *)ABMultivalueCopyvalueAtindex(email info, i)]; str = [str stringByAppendingString:@"\n"];

//---display the details--UIAlertview *alert = [[UIAlertview alloc] initWithTitle:@"Selected contact" message:str delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [al ert show]; [al ert release]; Ha kszen vagyunk, kapcsoljuk ki a People Pickert, s jelertsk meg a NO-t (amely semmit sem csinl): //---hide the People Picker--[self dismissModalviewcontrollerAnimated:YES]; return NO;

J\ peoplePickerNavigationcontroller:shouldcontinueAfterselectingPerson:property: i denti fi er: esemny akkor kvetkezik be, amikor rkoppintunk egy kapcsolatta, hogy a tulajdonsgait megnzhessk. Ez csak akkor kvetkezik be, amikor a peoplePickerNavigati oneont ro ll e r: shou l dconti nueA fterse l e c ti ngPerson: metdus YES-t ad vissza. Ha YES-t ad vissza, akkor a Contacts alkalmazs tovbbhalad, s megmutatja a kivlasztott nvjegy adatait. J\mikor egy tulajdonsgot kivlasztunk, a people PickerNaviga ti oncontroller:shouldcontinueAfterselectingPerson:property:identifier: esemny kvetkezik be. Ebben az esetben egy YES-t fogunk visszaadni, hogy a kivlasztott tulajdonsgra megvalsuljon a cselekvs, s bezrjuk a vlaszt elemet. Ha a szemlyt a vlaszt elemben szeretnnk megjelerteni, akkor NO-t kell visszaadnunk.

Nvjegy hozzadsaJ\rnellett, hogy a nvjegyeink mentett adatait megjelerthetjk, j nvjegyeket is elmenthetnk kzvetlenl a Contacts alkalrnazsba. Ezt a kvetkez kdrszletekkel tehetjk meg: -(void) addcontact{ ABAddressBookRef addressBook = ABAddressBookcreate(); ABRecordRef person= ABPersoncreate(); //---add the first name and last name--ABRecordsetvalue(person, kABPersonFirstNameProperty, @"Wei-Meng" , nil); ABRecordsetvalue(person, kABPersonLastNameProperty, @"Lee", nil); 386

A Contacts alkalmazs elrse //---add the address--ABMutableMultivalueRef address ABMultivaluecreateMutable(kABMultiDictionaryPropertyType); NSMutableDictionary *addressDictionary = [[NSMutableDictionary alloc] init]; [addressoictionary setobject:@"Some Street Name" forKey:(NSString *) kABPersonAddressstreetKey]; [addressDictionary setObject:@"New York" forKey:(NSString *) kABPersonAddresscityKey]; [addressDictionary setObject:@"NY" forKey:(NSString *) kABPersonAddressstateKey] ; [addressDictionary setobject:@"l2345" forKey:(NSString *) kABPersonAddressZIPKey] ; [addressoictionary setobject:@"United States" forKey:(NSString *) kABPersonAddresscountryKey] ; [addressoictionary setobject:@"us" forKey:(NSString *) kABPersonAddresscountrycodeKey]; ABMultivalueAddvalueAndLabel(address, addressoictionary, kABHomeLabel, NULL); ABRecordsetvalue(person, kABPersonAddressProperty, address, nil); //---add the address book for the contact and save the addressbook--ABAddressBookAddRecord(addressBook, person, nil); ABAddressBooksave(addressBook, nil); CFRelease(person);

A fenti metdus, az addcontact, j nvjegyet ad a Contacts alkalmazshoz. A kvetkez informcikkal tlti fel a kapcsolatot:

keresztnv, vezetknv, otthoni cm:

utca, vros, megye, irnytszm, orszg, orszg hvkdja.

A 16.11. bra bemutatja az j nvjegy rszleteit.16.11. bra

387

16. fejezet: A beptett alkalmazsok elrse

Megjegyzs Ha tbbet szeretnnk a nvjegyek hozzadsnak klnbz metdusairl megtudni, akkor nzznk bele az Apple iPhone Reference Libraryjben lv ABAddressBookba. Ezt a ht tp:/ /developer. apple. com/ iphone/library/documentation/AddressBook/Reference/ABAddressBookRef _i PhoneOS/ ABAddressBookRef_i Ph on eos. pdfhelyrl tlthetjk le.

Nvjegy trtseA nvjegy eltvoltshoz akvetkez*)

kdrszletet hasznljuk: firstName andLastName:(NSString *) lastName {

-(void) removecontact: (NSString

ABAddressBookRef addressBook; ABAddressBookcreate(); CFArrayRef allcontacts; ABAddressBookCopyArrayofAllPeople(addressBook); CFindex contactscount; ABAddressBookGetPersoncount(addressBook); for (int i ; O; i < contactscount; ++) ABRecordRef ref; CFArrayGetValueAtindex(allcontacts, i); NSString *contactFirstName ; (NSString *) ABRecordcopyValue( ref, kABPersonFirstNameProperty); NSString *contactLastName ; (NSString *) ABRecordcopyvalue( ref, kABPersonLastNameProperty); if [firstName isEqualToString:contactFirstName] && [lastName isEqualToString:contactLastName]) ABAddressBookRemoveRecord(addressBook, ref , nil); ABAddressBooksave(addressBook, nil);}

A remavecontact metdus kt paramtert, a firstName-et s a l astName-et veszi alapul, s ezek alapjn keresi meg a Contacts alkalmazsban az egyez kereszt- s vezetknevet Ha megtallja a nvjegyet, akkor trli a Contacts alkalmazsbL

Megjegyzs Ha tbbet szeretnnk a nvjegyek trlsnek klnbz metdusairl megtudni, akkor nzznk bele az Apple iPhone Reference Libraryjben lv ABAddressBookba. Ezt a http://developer.apple.com/iphone/library/documentation/AddressBook/Reference/ABAddressBookRef_iPhoneOS/ ABAddressBookReLi Phoneos. pdfhelyrl tlthetjk le.

388

A Contacts alkalmazs elrse

SSZEGZSEbb l a fej ezetbl megismerhettk, hogy mennyire egyszer a gyri alkalmazsokat sajt iPhone-alkalmazsainkba integrlni: SMS, Mail, Safari s trcsz megillvsa egy egyszer URL-karakterlnccaL Megnztk tovbb, hogyan frhetnk hozz a Contactshoz s a Pho to Libraryhez az iPhone SD K-ban tallhat osztlyok segtsgveL

ntH3i.li1. Mik a Safari, a Mail, az SMS s a trcszalkalmazsok megillvshoz hasznlt URLkarakterlnco k? 2. Mi a neve annak az osztlynak, amelyet az Image Picker felhasznli felletnek megillvsra hasznlunk az iPhone-oknl? 3. Mi a neve annak az osztlynak, amelyet a People Picker felhasznli felletnek m egillvsra hasznlunk az iPhone-oknl?

A FEJEZET TUDNIVALITmaE-mail kldse az alkalmazsonbellrl

AlapelvekNSString *emailstring @ "mailto : ?to=USER@ EMAIL . COM&subj ect=SUBJECT&body= BODY OF EMAIL " ; [[UIApplication sharedApplication] openURL: [NSURL URLWithString:emailString]]; [ [UIApplication sharedApplication] openURL:[NSURL URLWithString: @ "http:// www.apple.com"]]; [[UIApplication sharedApplication] openURL:[NSURL URLWithstring:@"tel:1234567890"]]; [[UIApplication sharedApplication] openURL : [NSURL URLWi thStri ng : @"sms: 96924065"]]; Hasznlj uk a UIImagePi eke rcontro ll e r osztlyt, s gyzdj nk meg rla, hogy a View Controller megvalstja a UINavi gat i onContra ll erDe l e gate protokollt. Hasznljuk a ABPeopl e Pi ckerNavi gat i oneontroll er osztlyt, a AddressBookUI keretren dszerbL

A Safari meghvsa

A Phone alkalmazs meghvsa

Az SMS alkalmazs meghvsa

A Photo Library alkalmazs

elrseA Contacts alkalmazs elrse

389

Hozzfrs a hardverhezA FEJEZET FBB RSZEl A KVETKEZK: Hogyan rjk el az !Phone vagy az iPod Touch Hogyanrzkelhe~k

gyorsulsmr

adatait?

az eszkz rzst?

Hogyan rhetnk el az !Phone s az iPod Touch Core Loeaciorr szolgltatsval fldrajzi adatokat? Hogyan jelertsnk meg trkpet az alkalmazsunkban?

Az

elz fejezetben lthattuk, hogyan frnk hozz az !Phone s az iPod Touch beptett alkalmazsaihoz klnbz eszkzk, URL-szttingek, valamint az !Phone SDK ltal knlt specializlt osztlyok segitsgvel. Ebben a fejezetben megismerhe~k, hogyan frhetnk hozz az eszkznk hardverhez, pldul a gyorsulsmrhz, s hogyan szerezhetnk helyzeti informcit GPS, mobiltorony s vezetk nlkli hotspot segitsgvel.

A gyorsulsmr hasznlataAz iPhone s az iPod Touch egyik leginnovavabb funkcija a beptett gyorsulsmr, amely lehetv teszi, hogy az eszkz megllaptsa a tjolst, s tartalmt az j tjolshoz igaztsa. Ha pldul oldalra fordtjuk az eszkzt, a Safari webbngsz automatikusan fekv mdba kapcsol, gy nagyobb nzetet biztost. Ehhez hasonlan a fnykpezgp a gyorsulsmrvel ll~a be, hogy a kp ll vagy fekv mdban kszljn.

17. fejezet: Hozzfrs a hardverhez

Az iPhone s az iPod Touch gyorsulsmrje az eszkz szabadesshez kpesti gyorsulst mri. Az 1 rtk jelenti, hogy az eszkzre 1 g er hat (1 g a Fld gravitcis vonzsa, amely az eszkzt nyugv llapotban ri). A gyorsulsmr az eszkz gyorsulst hrom klnbz tengelyen mri: X, Y s Z. A 17.1 bra a gyorsulsmr ltal mrt klnbz tengelyeket mutatja.+Y

-X

+X

+Z

-Z

-Y17.1 bra

A 17.1 tblzat a hrom tengely

klnbz

rtkeit muta~a az eszkz

klnbz

pozciiban.

17.1 tblzat. Az X, Y s Z tengelJek kiilnboz rtkei

PozciFggleges

xll helyzet

y-1,0 0,0 0,0

z0,0 0,0 0,0 0,0

0,0 1,0 -1,0 0,0

Bal oldali tjkp Jobb oldali tjkp FejjellefelKijelzvel Kijelzvel

felfel lefel

fekv fekv

helyzetben

0,0 0,0

0,0 0,0

-1,0 1,0

helyzetben

Ha az eszkzt fgglegesen tartjuk, s gyorsan jobbra mozgatjuk, az X tengely rtke nullrl poziv rtkre vltozik. Ha gyorsan balra mozgatjuk, akkor az X tengely rtke nullrl negav rtkre vltozik. Ha az eszkzt gyorsan felfel mozgatjuk, az Y tengely rtke -1 ,O helyett nagyobb rtket vesz fel. Ha az eszkzt gyorsan lefel mozgatjuk, az Y tengely rtke -1 ,O-rl kisebb rtkre cskken.

392

A gyorsulsmr hasznlata

Ha az eszkz kijelzvel felfel fekszik az asztalon, s felemeljk, a Z tengely rtke -1,0-rl kisebb szmra cskken. Ha felfel mozgatjuk, a Z tengely rtke -1,0-rl nagyobb rtkre vltozik.

Ir Megjegyzs Az i Phone s az i Pod Touchtket tud mrni, 0,018 g felbontssal.

gyorsulsmrje

+/-

2,3 g kztti r-

A

mr

gyakorlati rsz megmutatja, hogyan rhet el programozottan a gyorsulsltal adott adat. A gyo rsulsmr adataihoz hozzfrve rdekes alkalmazsok hozhatk ltre - ilyen pldul a vzszintez vagy egy mozgsrzkels jtk.A gyorsulsmr adatainak az elrse

kvetkez

A programkd [Accelerometer.'(jp} a Wrox.com

oldalrltlthet le.

1. Hozzunk ltre egy j View-based

Application projektet az Xcode segtsgve!, s nevezzk el Ac ce l e remete r-nek. 2. Kattintsunk ktszer az Ac cel eromete rvi ew control l er . xib fjlra, hogy az Interface Builderrel szerkesszk. 3. Tltsk fel az elemablakot hat Label (cmke) elemmel (lsd a 17.2. brt) .

X-axis Y -axis Z-axis

Label Label Label

4. Adjuk hozz az Accel e rom etervi ewcont rol ler. h fjlhoz a kvetkez flkvrerr szedett utastsokat: #import @inte rfa ce Accele romete rviewcont roller U lViewcontroller { lBOutlet UlLabel *labelx ;