Desarrollo de apps para iphone

  • 6,270 views
Uploaded on

¿Eres adicto a la descarga de aplicaciones para iPhone? ¿Te gustaría crear tus propias apps? Esta es tu oportunidad. Hemos organizado este taller donde podrás aprender a desarrollar aplicaciones para …

¿Eres adicto a la descarga de aplicaciones para iPhone? ¿Te gustaría crear tus propias apps? Esta es tu oportunidad. Hemos organizado este taller donde podrás aprender a desarrollar aplicaciones para iOs. En caso de que ya estés familiarizado con el tema, tendrás ocasión de profundizar un poco más. ¡No te lo pierdas!

Ponente: Jesús Mazcuñán. Trainer y director de IT en Barreira Arte y Diseño, donde imparte clases sobre programación para dispositivoss iOS. Coordinador técnico certificado por Apple y desarrollador para iOS, ha impartido cursos sobre este sistema operativo en la Facultad de Sevilla, la Fundación CAMON o con Universo Mac.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,270
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
157
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Desarrollo iOS Creación de Aplicaciones para iPad, iPhone e iPod Touch iOS100a - Jesús Mazcuñán Arnandis - Julio 2011jueves 14 de julio de 2011
  • 2. Presentaciónjueves 14 de julio de 2011
  • 3. Sobre Barreira Arte y Diseño... Centro dedicado a la formación en materias de diseño. Centro AATCe. barreira@barreira.es CICLOS FORMATIVOS APPLE Grado Medio - Arte Final Aperture Grado Superior - Decoración Final Cut Grado Superior - Diseño Gráfico iLife Grado Superior - Mobiliario iWork Grado Superior - Modas Mac OS X Mac OS X Server ADOBE iOS Photoshop CURSOS ESPECIALIZADOS Illustrator Indesign PRUEBA DE ACCESO Dreamweaver Flash TALLERES AUTODESK Dibujo técnico Dibujo artístico Autocad Creación multimedia 3D Max Revitjueves 14 de julio de 2011
  • 4. Sobre el docente... Jesús Mazcuñán Arnandis Formador en Barreira Arte y Diseño Apple Certi ed • Pro • Trainer (IT & Pro Apps) • Support Professional 10.6 • Technical Coordinator 10.6 iOS Developerjueves 14 de julio de 2011
  • 5. Cursos iOS * No hay cursos o ciales de iOS. • iOS User Start Point (4h) • iOS 100 Developer Start Point (10h) • iOS 101 Developer Boot Camp (>20 h) • iOS 201 Advanced Apps (>20h) • iOS 300 Frameworks (4h) • iOS 301 Starting Game Development with Cocos 2Djueves 14 de julio de 2011
  • 6. iOS 100a (5h) Tenemos 5 horas para cubrir los principales objetivos que nos permitirán iniciarnos en el desarrollo de aplicaciones iOS - Conocer el dispositivo - Conocer el lenguaje de desarrollo - Conocer la estructura del programa - Entender la losofía del proceso de desarrollo - Conocer las herramientas del SDK (XCode 3.*) - Introducir los principales componentes de UIKit - Realizar pruebas en el simulador El resto de contenidos se ven en iOS 100 (b)jueves 14 de julio de 2011
  • 7. iOS 100b (5h) Después de haber visto los contenidos de iOS 100a, podemos pasar a las siguientes fases de desarrollo. - Programa de desarrollo (Standard) - Generación de certi cados de desarrollo - Pruebas en hardware - Fundamentos de la distribución de aplicaciones - Más componentes de UIKitjueves 14 de julio de 2011
  • 8. Antes de comenzar... Requisitos mínimos • Saber programar en cualquier lenguaje. • Conocer los conceptos de la programación orientada a objetos. • Estar registrado como desarrollador iOS en el programa gratuito. Requisitos ideales • Saber programar en Objective-C. • Estar registrado en el Standard Program. • Disponer de un terminal para pruebas (y cable USB).jueves 14 de julio de 2011
  • 9. iOS Overviewjueves 14 de julio de 2011
  • 10. iOS Overview Sistema Operativo y tecnologías que se utilizan para ejecutar aplicaciones nativas en iPad, iPhone e iPod Touch. Para desarrollar las aplicaciones nativas utilizamos: • iOS SDK: contiene el código, la información y las herramientas necesarias para desarrollo. • XCode: proporciona las herramientas para edición, compilación y depuración. • Simulador (no emulador) de iOS: es una plataforma que imita los dispositivos.jueves 14 de julio de 2011
  • 11. iOS Overview • iOS nos proporciona los mecanismos necesarios para generar aplicaciones con independencia del hardware. • Aunque la aplicación no se ve afectada por los cambios en el hardware hemos de ser conscientes de las capacidades de los dispositivos. • Las versiones de iOS intentan maximizar la retrocompatibilidad, pero no siempre es posible. (iOS 4.3 no soporta modelos de 2ª generación)jueves 14 de julio de 2011
  • 12. iOS Overview • Framework: Directorios que contiene las librerías (bibliotecas) dinámicas y los recursos para soportarlas. • iOS proporciona un conjunto de librerías dinámicas para tareas comunes. • Cualquier librería de terceros ha de ser incluida como librería estática. • Librerías estáticas son aquellas que se copian en la aplicación generando productos independientes.jueves 14 de julio de 2011
  • 13. iOS Overview Podemos crear dos tipos de aplicaciones: Contenido Web • HTML5, Javascript, CSS, AJAX, SQLite... • http://www.apple.com/webapps Aplicaciones Nativas • C, C++, Objective-C. • App Store. • Proceso de validación.jueves 14 de julio de 2011
  • 14. Dispositivosjueves 14 de julio de 2011
  • 15. Dispositivos En enero de 2011 Apple anuncia que ha superado la cifra de 160 millones de dispositivos que soportan iOS vendidos. Estos dispositivos incluyen diversas familias: • iPod Touch (4 generaciones) • iPhone (4 generaciones) • iPad (2 generaciones) Distintas capacidades entre familias e incluso dentro de la misma familia.jueves 14 de julio de 2011
  • 16. Caducidad de Dispositivos A pesar de intentar dar soporta a todos los dispositivos anteriores con cada versión de iOS mediante el recorte en prestaciones software, las diferencias de hardware obligan a Apple a abandonar el soporte para los modelos antiguos llegado cierto punto. Las fechas de caducidad son: • iPhone EDGE (1G) - 36 meses • iPhone 3G (2G) - 32 meses • iPod Touch (1G) - 33 meses • iPod Touch (2G) - 29 mesesjueves 14 de julio de 2011
  • 17. Dispositivos iPhone iPod Touch iPad 3G 3GS 4 2ª 3ª 4ª 2 2.0 3.0 4.0 2.1.1 3.1.1 4.1 3.2 4.3 A4 A4 A4 A5 412MHz 600MHz 532MHz 600MHz 800MHz 800MHz 1GHz 1GHz 128MB 256MB 512MB 128MB 256MB 256MB 256MB 512MB 480x320 480x320 960x640 480x320 480x320 960x640 1024x768 1024x768 163ppi 163ppi 326ppi 163ppi 163ppi 326ppi 132ppi 132ppijueves 14 de julio de 2011
  • 18. Memoria RAM Es uno de los aspectos más críticos. Varia con el cambio de iPhone OS 3 a iOS 4. Memoria Memoria Aviso de RAM Disponible Memoria 128 Mb 35-40 Mb 20-25 Mb 256 Mb 120-150 Mb 80-90 Mb 512 Mb 340-370 Mb 260-300 Mbjueves 14 de julio de 2011
  • 19. Developer Programjueves 14 de julio de 2011
  • 20. Developer Program Programas de desarrollo • Gratuito • Standard (Individual) ($99/year) • Standard (Enterprise) ($99/year) • Enterprise ($299/year) • Universidad Programa de desarrollo para hardwarejueves 14 de julio de 2011
  • 21. XCode + iOS SDKjueves 14 de julio de 2011
  • 22. iOS SDK ¿Cómo obtener el iOS SDK? • Como descarga desde el portal de desarrollo. • La URL es http://developer.apple.com/ios • Es necesario (y gratuito) registrarse • Requiere Mac OS X actualizado (>10.6.4)jueves 14 de julio de 2011
  • 23. XCode Actualmente el iOS SDK sólo se puede descargar en conjunto con el XCode. Hay dos versiones disponibles de XCode: • XCode 3.x • XCode 4.x La versión 3.x es gratuita y está disponible para cualquier persona registrada como desarrollador. La versión 4.x sólo es gratuita para desarrolladores inscritos en programas de pago. La versión 4.x puede ser adquirida por cualquiera a través del App Store por 3.99€jueves 14 de julio de 2011
  • 24. XCode 3 • XCode: Entorno integrado de desarrollo que nos permite crear, gestionar, compilar y depurar el código de las aplicaciones. • Interface Builder: Herramienta que nos permite montar el interfaz de la aplicación de manera visual. • Instruments: Herramienta de análisis de rendimiento y depuración. • iOS Simulatorjueves 14 de julio de 2011
  • 25. XCode 4 XCode Tools • XCode 4: ‣ Entorno integrado de desarrollo que nos permite crear, gestionar, compilar y depurar el código de las aplicaciones. ‣ Integra elementos para generar la interfaz grá ca y de datos de la aplicación de manera visual. • Instruments: Herramienta de análisis de rendimiento y depuración. • iOS Simulatorjueves 14 de julio de 2011
  • 26. Objective-Cjueves 14 de julio de 2011
  • 27. Objective-C • Lenguaje de programación orientada a objetos. • Es un superset de ANSI C. • Está basado en Smalltalk. • Fue desarrollado en 1980. • Adoptado por NEXTSTEP en 1988. • En 1992 fue liberado bajo licencia GPL para GCC. • Es compatible con C y con C++. • Objective-C 2 es la base que utilizan Cocoa y Cocoa Touch.jueves 14 de julio de 2011
  • 28. Objective-C De nimos archivos de encabezado y de código. • .h para los archivos de encabezado. • .m para el código en C y Objective-C • .mm para el código en C++ y Objective-C Las clases se de nen en dos partes: el interfaz (.h) y la implementación (.m) Soporta el uso de #import como directiva para incluir los archivos .h en los archivos .m y .mmjueves 14 de julio de 2011
  • 29. Objective-C Nombre de la clase Nombre de la clase padre @interface MyClass : NSObject { int count; id data; Declaración de variables NSString *name; } -(id)initWithString:(NSString *)aName; +(MyClass *)createMyClassWithString:(NSString *)aName; @end Declaración de métodosjueves 14 de julio de 2011
  • 30. Objective-C Podemos utilizar los tipos de variables de C y C++. La mayoría de los tipos de Objective-C se de nen como punteros. Podemos de nir tipos como id (weak typing). Todos los objetos son descendientes de NSObject.jueves 14 de julio de 2011
  • 31. Objective-C -(void)insertObject:(id)anObject atIndex:(NSUInterger)index; El signo - identi ca el método como de instancia (+ para métodos de clase). (void) tipo de retorno. insertObject:atIndex: selector del método. (id) y (NSUInteger) tipos de los parámetros. anObject y index nombres de los parámetros.jueves 14 de julio de 2011
  • 32. Objective-C Las llamadas a métodos se hacen a través del envío de mensajes a objetos. Los mensajes se envían entre corchetes [] [anObject insertObject:anotherObject atIndex:index]; Los mensajes se pueden anidar [[myObject textLabel] setText:@”¿Porqué esa @? ;)”]; Existe una notación de puntos para propiedades y es totalmente equivalente [myObject.textLabel setText:@”¿Porqué esa @? ;)”];jueves 14 de julio de 2011
  • 33. Objective-C La implementación de MyClass sería la siguiente: @implementation MyClass -(id)initWithString:(NSString *)aName { ... } +(MyClass *)createMyClassWithString:(NSString *)aName { ... } @endjueves 14 de julio de 2011
  • 34. Objective-C Las propiedades se de nen en el interfaz de la siguiente manera: @interface MyClass : NSObject { NSString *name; } @property (nonatomic, retain) NSString *name; @end Y en la implementación como: @implementation MyClass @synthesize name; ...jueves 14 de julio de 2011
  • 35. Objective-C La síntesis de propiedades automatiza el proceso de creación de los métodos de acceso a las variables de instancia: Si la variable se llama myVar entonces: • El método de escritura será setMyVar: • El método de lectura será myVar En cualquier caso, en la notación de puntos accederemos como: myObject.myVar = @”Supongamos una cadena”; NSLog(@”%@”, myObject.myVar);jueves 14 de julio de 2011
  • 36. Objective-C Al declarar la propiedad hemos indicado parámetros que indican cómo se debe sintetizar la misma. Los más importantes son: getter=..., setter=..., readwrite, readonly, assing, retain, copy y nonatomic (atomic NO existe como parámetro). A la hora de usar @synthesize podemos cambiar el nombre de los métodos indicando: @synthesize theVar = myVar;jueves 14 de julio de 2011
  • 37. Objective-C Los protocolos son conjuntos de funciones declaradas que carecen de implementación y que deben ser implementadas (o no) por los objetos delegados. Los protocolos se declaran como: @protocol -(void)requiredMethod; @optional -(void)optionalMethod; @required -(void)anotherRequiredMethod; @endjueves 14 de julio de 2011
  • 38. Objective-C Para especi car que una clase cumple un protocolo, utilizamos: @interface myObject:NSObject <aProtocol, bProtocol> { Podemos hacer que una clase cualquiera cumpla un protocolo usando categorías. Las categorías nos permiten ampliar el número de métodos de una clase pero no sus variables de instancia.jueves 14 de julio de 2011
  • 39. Objective-C Objective-C no tiene garbage collector. Funciona con un sistema de cuenta de referencias a objetos. Nunca usaremos dealloc, siempre release. Cuando queremos conservar un objeto, incrementamos su cuenta de referencias con retain. Podemos utilizar un sistema de pools para deshacernos de variables temporales utilizando autorelease.jueves 14 de julio de 2011
  • 40. Sistema Basejueves 14 de julio de 2011
  • 41. iOS Runtime Environment Presenta por defecto una serie de restricciones para optimizar el funcionamiento del equipo. Filosofía de usuario: Fast launch - Short Use. La multitarea agiliza la carga de aplicaciones. La memoria es limitada y puede que necesitemos descargar/recargar datos.jueves 14 de julio de 2011
  • 42. Sistema de Memoria Virtual iOS no soporta paginación al disco. Cuando la memoria se va terminando... • Se libera la memoria de solo lectura. • Se envían noti caciones a los programas. Hemos de tenerlo en cuenta a la hora de diseñar nuestras clases.jueves 14 de julio de 2011
  • 43. Automatic Sleep Timer Si el sistema no detecta actividad táctil durante un periodo de tiempo prolongado... • Baja el brillo de la pantalla • Apaga la pantalla • Bloquea el dispositivo *Podemos deshabilitar esta opción si es necesario: [[UIApplication sharedApplication] setIdleTimerDisabled:YES];jueves 14 de julio de 2011
  • 44. Application Sandbox Se trata de un mecanismo de defensa para la aplicación y el sistema. Se crea un directorio único y opaco para almacenar la aplicación. Simpli ca instalaciones, backups, restauraciones y borrado. La aplicación sólo puede acceder a los contenidos de su sandbox. El sistema de archivos es case sensitive. No hay límites en el tamaño de la aplicación y de los documentos de la misma, hay sentido común.jueves 14 de julio de 2011
  • 45. Application Sandbox Backups incrementales de las carpetas en negrita: <Application Home>/AppName.app <Application Home>/Documents <Application Home>/Library <Application Home>/Library/Preferences <Application Home>/Library/Caches <Application Home>/tmp/jueves 14 de julio de 2011
  • 46. Patrones de Diseño iOS utiliza los siguientes patrones de diseño: • Model-View-Controller • Block Objects • Delegation • Target-Action • Managed Memory Model • Threads y Programación Concurrente • Singletonjueves 14 de julio de 2011
  • 47. Interface IBOutlets & IBActionsjueves 14 de julio de 2011
  • 48. Window Based Template File’s Owner First Responder Window UIApplicationDelegatejueves 14 de julio de 2011
  • 49. Window Las aplicaciones tienen sólo una ventana. La ventana proporciona un área donde dibujar el resto de elementos de la aplicación. La ventana es una subclase de vista aunque carece de controlador de vista. (Implicaciones más adelante)jueves 14 de julio de 2011
  • 50. IBOutlets & IBActions Los IBOutlets marcan una variable en XCode para que sea seleccionable en Interface Builder. Las IBActions marcan un método en XCode para que sea accesible por los elementos capaces de hacer llamadas a funciones en Interface Builder. A efectos de código son inocuos. Al contrario que en Cocoa, en Cocoa Touch se permite la asociación de varias acciones a un mismo evento. *Problema de compatibilidad entre Mac OS X e iOSjueves 14 de julio de 2011
  • 51. View Based Template UIApplicationDelegate Window ViewController Viewjueves 14 de julio de 2011
  • 52. UIKit Elementos básicosjueves 14 de julio de 2011
  • 53. UIKit Se trata del Framework que nos proporciona la base para el diseño de las aplicaciones iOS. Se deben utilizar desde el main thread. Existe un proyecto de ejemplo en el que se exponen los elementos y sus estilos (UICatalog). Principalmente trabajaremos sobre los elementos y las acciones que provocan o requieren.jueves 14 de julio de 2011
  • 54. UIKit Los distintos controles pueden ser: • Elementos Activos (Active): UIButton, UISwitch ... • Elementos Inactivos (Static): UITextField ... • Elementos Pasivos (Pasive): UIImage, UILabel ... (Casi) Todos son subclases de UIControl y pueden actuar de cualquier de las tres maneras.jueves 14 de julio de 2011
  • 55. First Responder Un “responder” es un objeto que puede responder a eventos y manipularlos. El “ rst responder” se re ere en cada momento al elemento que tiene el foco. El objeto debe responder al método canBecomeFirstResponder. Desde ese momento es capaz de situarse como elemento que recibe los eventos de movimiento, control remoto, acciones y menús de edición.jueves 14 de julio de 2011
  • 56. First Responder En ocasiones, tendremos que forzar que una instancia abandone el papel de First Responder con resignFirstReponder. Podemos pasar el mensaje al siguiente elemento de la cadena ([self nextResponder]) de manera manual. Cabe destacar que el nextResponder de un UIView es su View Controller.jueves 14 de julio de 2011
  • 57. Puliendo detalles... iPhone 4 incluye una pantalla Retina Display. El tamaño en pixeles de la pantalla pasa de 320x480 a 640x960. El escalado de los elementos es automático. Podemos incluir imágenes de alta resolución. Si incluimos el archivo imagen.png y el sistema detecta alta resolución, reemplazará la imagen automáticamente por imagen@2x.png si existe.jueves 14 de julio de 2011
  • 58. View Controllersjueves 14 de julio de 2011
  • 59. View Controller Nos permiten generar bloques MVC. Podemos reutilizar elementos: • En otras aplicaciones • En la misma aplicación Es conveniente de nir las interacciones entre view controllers mediante protocolos.jueves 14 de julio de 2011
  • 60. Rotación View Controllersjueves 14 de julio de 2011
  • 61. Rotación Cuando rotamos el dispositivo, el sistema puede encargarse de rotar los componentes de nuestra aplicación. Tenemos tres opciones para gestionar este cambio: • Autorotating & Autosizing • Realizar los cambios programáticamente • Realizar los cambios mediante un archivo NIBjueves 14 de julio de 2011
  • 62. Root Controllerjueves 14 de julio de 2011
  • 63. Root Controller Las aplicaciones con múltiples vistas necesitarán un controlador de vistas que será hijo de UIViewController Ese controlador tendrá información sobre sus posibles vistas y funciones para intercambiar el valor a asignar a view por cualquiera de ellas Identi camos si un elemento está o no cargado porque si no está cargado, el valor de myObject.view.superview será nil.jueves 14 de julio de 2011
  • 64. Tab Barjueves 14 de julio de 2011
  • 65. Tab Bar Necesitamos un UITabBarController [window addSubview:myTabController.view]; Podemos gestionarlo directamente desde Interface Builder o a mano pero combinar las dos aproximaciones es bastante complicado myTabController.viewControllers es un Array de UIViewControllersjueves 14 de julio de 2011
  • 66. Tab Bar Podemos personalizar la imagen que utiliza con contactsNavController.tabBarItem.image = [UIImage imageNamed:@"contacts.png"]; Podemos personalizar también el título y el Badge del TabBarItem de cada ViewController. Tiene un límite de componentes y tras excederlo se encarga de gestionar el exceso, la reorganización...jueves 14 de julio de 2011
  • 67. Navigation Controllerjueves 14 de julio de 2011
  • 68. NavigationController Gestiona la navegación entre controladores de vista en forma de pila. Gestionamos un método de tipo push que inserta el siguiente elemento en la pila. Podemos gestionar un método de tipo pop para volver hacia atrás en la jerarquía, pero esta acción se suele dejar al backBarButton. El backBarButton es personalizable pero hay que entender CUANDO aparece.jueves 14 de julio de 2011
  • 69. Comunicación con el Usuario AlertView , ActionSheets y Vistas Modalesjueves 14 de julio de 2011
  • 70. AlertView Permite avisar al usuario. Puede gestionar la respuesta del usuario mediante botones. Los pasos para utilizarlo son: • Tener un delegado (si hay que realizar acciones) • Generar un UIAlertView • Mostrar un UIAlertView en la ventanajueves 14 de julio de 2011
  • 71. ActionSheet Permite consultar al usuario. Puede gestionar la respuesta del usuario mediante botones. Los pasos para utilizarlo son: • Tener un delegado • Generar un UIActionSheet • Mostrar un UIActionSheet en una vista concreta y que sea visible en este momento.jueves 14 de julio de 2011
  • 72. Vistas Modales Un UIViewController puede lanzar una vista de forma modal. Utilizamos el método: presentModalViewController:inView: El UIViewController que lanzamos, devolverá el control al anterior con el método dismissModalViewControllerjueves 14 de julio de 2011
  • 73. Persistencia de Datosjueves 14 de julio de 2011
  • 74. Estrategias de persistencia Podemos utilizar distintas estrategias de persistencia: - Uso de un archivo - Uso de múltiples archivos - Uso de bases de datos • SQLite 3 • Core Data - Uso de las preferencias de usuariojueves 14 de julio de 2011
  • 75. Documents & tmp Directorios en los que podemos escribirjueves 14 de julio de 2011
  • 76. Document Directory Dentro del sandbox, es el directorio en el que podemos guardar elementos de forma que sean persistente (y se haga backup de los mismos). Obtenemos la ruta de este directorio mediante el siguiente código: ! NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); ! NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@”myFile.ext”];jueves 14 de julio de 2011
  • 77. tmp Directory Directorio que también podemos utilizar para almacenar datos. No podemos garantizar su existencia ni su persistencia. Obtenemos la ruta de este directorio mediante el siguiente código: ! NSString *tempPath = NSTemporaryDirectory(); ! NSString *tempFile = [tempPath stringByAppendingPathComponent:@"tempFile.ext"];jueves 14 de julio de 2011
  • 78. Application Setup & User Defaultsjueves 14 de julio de 2011
  • 79. Settings Bundle Las preferencias de usuario se acceden desde el menú de ajustes. Permiten con gurar aquellos aspectos que se deben establecer una vez y rara vez son modi cados. (Por ejemplo, nombre de la cuenta de usuario...) No todas las aplicaciones lo necesitan.jueves 14 de julio de 2011
  • 80. Settings Bundle Hemos de crear un settings bundle. Se trata de un Property List con un formato concreto que almacena diversos tipos de valores. Se copia en una localización especial y es accesible por el sistema desde los ajustes. Se accede a los datos mediante un sistema key- value ! NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; ! [defaults objectForKey:myKey]; ! [defaults setObject:myObject forKey:myKey];jueves 14 de julio de 2011
  • 81. Data from the Webjueves 14 de julio de 2011
  • 82. Network Basics Descargar archivos desde internet basados en esquemas de URL Guardar los archivos en la ruta de documentos de la aplicación Recuperar los archivos de la ruta de documentos de la aplicación.jueves 14 de julio de 2011
  • 83. UIWebViewjueves 14 de julio de 2011
  • 84. UIWebView Partimos de un UIWebView Cargamos contenido HTML (reemplaza al RTF) La clave es la etiqueta META siguiente: <meta name="viewport" content="width=320, user-scalable=yes"> Podemos cargar datos HTML desde una cadena: NSString *html = @"<html><head></head><body><h1>Hello Web! </h1></body></html>"; [web loadHTMLString:html baseURL:nil];jueves 14 de julio de 2011
  • 85. UIWebView Podemos cargar contenidos desde una URL de la siguiente manera: NSString *urlAddress = @"http://www.google.com"; //Create a URL object. NSURL *url = [NSURL URLWithString:urlAddress];! //URL Requset Object NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; //Load the request in the UIWebView. [web loadRequest:requestObj];jueves 14 de julio de 2011
  • 86. Handling Touch Events Taps, Touches & Gesturesjueves 14 de julio de 2011
  • 87. Pantallas Capacitivas Pantallas capacitivas vs. pantallas resistivas. Detección de variaciones en el campo capacitivo. Discriminación de ruido. Imposibilidad de utilizar stylus < 5mm diámetro. Gestión software de los eventos.jueves 14 de julio de 2011
  • 88. Recepción de Eventos Precisamos elementos que: • Hereden de UIResponder • Sean capaces de establecerse como FirstResponder Podemos trasladar el evento al siguiente elemento de la cadena de respuesta. Las vistas pasan el evento a sus controladores.jueves 14 de julio de 2011
  • 89. Eventos Táctiles Poner un dedo en la pantalla: Touch Quitar y poner el dedo de la pantalla: Tap Combinación de touches/taps: Gestures Arrastrar un dedo: • En una dirección: Swipe o Flick (rápido) • En una ruta: Dragjueves 14 de julio de 2011
  • 90. Eventos Táctiles Mover dos dedos en direcciones opuestas • Separar/acercar dos dedos: Pinch open/close • Rotar: Rotate Mover dos dedos en paralelo: Pan Sacudir el dispositivo: Shakejueves 14 de julio de 2011
  • 91. Eventos Táctiles Las funciones que podemos controlar son: touchesBegan:withEvent: touchesMoved:withEvent: touchesEnded:withEvent: touchesCancelled:withEvent: iPhone e iPod soportan 5 touches en la pantalla. iPad soporta 10 touches en la pantalla.jueves 14 de julio de 2011
  • 92. Gestores Podemos gestionar los gestos mediante controladores. Todos son subclases de UIGestureRecognizer UITapGestureRecognizer UIPinchGestureRecognizer UIRotationGestureRecognizer UISwipeGestureRecognizer UIPanGestureRecognizer UILongPressGestureRecognize Hemos de inicializarlos, con gurarlos y asociarlos a una vista.jueves 14 de julio de 2011