Rozpoznawanie dotyku
Wielodotyk Ekran urządzenia ios jest w stanie rozpoznać do 5 punktów dotyku Zdarzenia są obsługiwane w kolejce Przekazywanie zdarzeń nie jest automatyczne
Metody obsługujące touchesbegan gdy palec dotknie ekranu przekazuje informacje o każdym punkcie dotyku touchesmoved gdy palec przesuwa się po ekranie touchesended gdy palec się podniesie touchescancelled gdy nastąpi przerwanie, np. telefon
Przykład
Przykład Domyślnie widoki nie reagują na wielodotyk Zmieniamy opcję widoku
Metoda touchesbegan
touchesmoved
touchesended
Rozpoznawanie pozycji
Gesty Od ios 4 specjalna klasa do rozpoznawania gestów UIGestureRecognizer i jej specjalizacje UITapGestureRecognizer UIPinchGestureRecognizer UIPanGestureRecognizer UISwipeGestureRecognizer UIRotationGestureRecognizer UILongPressGestureRecognizer
Obsługa gestu Definiujemy klasę do obsługi Przekazujemy jej referencję do metody, która ma być wywołana po wykryciu gestu Niektóre gesty są pojedyncze (tap) inne ciągłe (swipe, pan)
Przykład
Przykład
Multitasking
Multitasking Do wersji ios 4 był ograniczony do aplikacji systemowych Aplikacja może znajdować się w jednym ze stanów: Na wierzchu - aktualnie wyświetlana aktywna nieaktywna W tle Zawieszona
Czas życia aplikacji Uruchomienie - wywoływana jest metoda didfinishlaunchingwithoptions W momencie uzyskania ekranu wywoływana jest metoda applicationdidbecomeactive Jeżeli aplikacja od razu trafia do tła wywoływana jest metoda applicationdidenterbackground
Czas życia aplikacji Aplikacja ma 5 sekund na zakończenie metody Może zyskać więcej czasu wywołując metodę beginbackgroundtaskwithexpiration i endbackgroundtask
Czas życia aplikacji Gdy aplikacja ma wyjść z tła wywoływana jest metoda applicationwillenterforeground a potem applicationdidbecomeactive Gdy aplikacja ma być zakończona wywoływana jest metoda applicationwillterminate
Czas życia aplikacji Wszystkie aplikacje tworzone w Xcode 4 są domyślnie aplikacjami działającymi w tle Można to zmienić poprzez ustawienia aplikacji poprzez edycję pliku Info.plist
Multitasking Jest dostępny od iphone a 3GS i ios 4. W innym wypadku aplikacje kończą działanie Można sprawdzić w kodzie, czy multitasking jest dostępny
Powiadomienia Aplikacja w tle nie ma dostępu do ekranu Jedyny mechanizm to lokalne powiadomienia Lokalne w przeciwieństwie do zdalnych - serwerowych
Przykład Nowy projekt typu SingleView Powiadomienie ma być wyświetlone 10 s po przejściu w tło Dodajemy plik dźwiękowy Modyfikujemy metodę applicationdidenterbackground
Waluty
Waluty Program wyświetlający aktualne kursy podstawowych walut (predefiniowane EUR, USD, GBP, CHF) kursy FOREX kursy w kantorze internetowym kursy w banku Interesują nas kursy sprzedaży
Waluty Dane wyświetlane w formie tabelarycznej z podziałem na sekcje Odświeżane po wyświetleniu aplikacji lub na żądanie
Źródło danych Serwis systemowy napisany w C# uruchomiony na serwerze Windows 2003 Server Parsuje strony kantorów internetowych i banku co 2 minuty Zapisuje i udostepnia plik RSS z kursami
Źródło danych
RSS Rich Site Summary Really Simple Syndication Format plików XML do publikowania treście w Internecie Wspierany przez.net
RSS
Aplikacja ios Widok tabelaryczny Oparta na scenorysie (w przyszłości wyświetlanie szczegółów walut) Na razie tylko wersja iphone
Tworzymy projekt
Tworzymy projekt
Ikona i startup
Edytujemy scenorys usuwamy widok (View) z szablonu wstawiamy widok tabelaryczny (Table View) wstawiamy prototyp komórki (Table View Cell)
Edytujemy scenorys Edytujemy zawartość prototypu komórki 3 etykietki UILabel obrazek UIImage niewidzialny przycisk nad ostatnią etykietą
Dodajemy klasę Klasa dziedziczy po UITableViewCell Będzie obsługiwała pojedynczą komórkę tabeli
Dodajemy klasę
Dodajemy klasę
Tworzymy powiązania wracamy do scenorysu we własnościach komórki zaznaczamy klasę, która ją obsługuje otwieramy edytor pomocniczy (Assistant Editor) przeciągamy z Ctrl z elementów interfejsu na nagłówek klasy
Tworzymy powiązania
Tworzymy powiązania Dodajemy jeszcze dwie metody obsługujące formatowanie
Implementujemy klasę
Implementujemy klasę
Dodajemy klasę Klasa Currency do obsługi pojedynczego kursu waluty
Dodajemy klasę
Implementujemy kontroler
Implementujemy kontroler
Implementujemy kontroler
Obsługa odświeżania
Parsowanie RSS
Parsowanie RSS
Parsowanie RSS
Obsługa tabeli
Obsługa tabeli
Obsługa tabeli
Widok szczegółów waluty Wyświetla wykres historyczny kursu Umożliwia przeliczenie kwoty pomiędzy walutą i PLN w obie strony Wykres udostępniany przez serwer jako obrazek PNG
Storyboard Dodajemy drugi widok typu UIView Dodajemy przejście od komórki tabeli do nowego widoku typu Modal i przejście powrotne też Modal Wstawiamy etykietki, pole tekstowe, pole segmentowe i pole obrazka oraz przycisk Powrót
Klasa DetailViewController Dodajemy gniazdka do kontrolek Dodajemy akcje
Klasa DetailViewController metoda viewwillappear
Akcje
Przejście W WalutaViewController dodajemy metodę prepareforsegue identyfikator przejścia
Rozszerzenia Od ios 8 aplikacje mogą implementować rozszerzenia: ekranu Today współdzielenia akcji edycji zdjęć źródła dokumentów własne klawiatury
Rozszerzenie Today Do aplikacji Waluty dodamy rozszerzenie ekranu Today Na początek będzie wyświetlało tylko aktualny kurs EUR i jego zmianę dzienną
Strona serwera Parsowanie RSS trochę nadmiarowe Napiszemy serwer udostępniający dane przy użyciu REST z wykorzystaniem WCF
Serwer Tworzymy nowy projekt typu WCF Service Application
Serwer Plik IService1.cs Plik Service1.svc
Dodajemy DataSet Zapytanie będzie miało postać http://localhost/waluty/service1.svc/getdata/eur
Piszemy kod
Serwer Wprowadzamy zmiany, aby dostosować serwis do działanie w trybie JSON W pliku IService1.cs
Serwer Edytujemy Web.config
Rozszerzenie W naszym projekcie dodajemy nowy cel (Target)
Tworzymy rozszerzenie Modyfikujemy projekt interfejsu W piku nagłówkowym definiujemy gniazdka
Piszemy kod Parsowanie odpowiedzi JSON
Piszemy kod
Edytujemy info.plist Ustawienia