Cómo implementar el controlador hallazgo para la geocodificación en su aplicación para ios

Para su funcionalidad de geocodificación para trabajar en su aplicación para iOS, vas a tener que hacer varias cosas en el controlador Buscar. La mayor parte de lo que tiene que hacer gira en torno a conseguir el texto que el usuario introduce. Usted también tiene que tener el texto codificado geográficamente y tienen la ubicación geocodificada implementa como una Anotación por el Viaje modelo de objetos, que el controlador Find añadirá al mapa.

Para acceder al texto, primero tiene que crear una salida para el campo de texto. Sigue estos pasos:

  1. Seleccionar Main_iPad.storyboard en el Navegador de proyectos.

  2. Seleccione el controlador principal Vista en el esquema del documento.

    Xcode`s assistant editor button.

  3. Seleccione el Asistente en el selector de editor, y si el MasterViewController.h archivo no aparece, vaya a la misma mediante la barra de salto.

  4. En el esquema del documento, abra el triángulo de información por segundo Tabla sección en la vista controlador maestro - Master Scene para llegar a la celda de tabla Vista.

  5. Abra la vista de tabla celular para revelar el contenido Ver la celebración de la etiqueta Buscar y texto.

  6. Abrir triángulo desplegable de la celda para mostrar el campo de texto, y luego controlar y arrastre desde el campo de texto estilo de borde No a la interfaz principal Vista controlador (en el editor asistente) entre el @interfaz y -re directivas del compilador, y añaden una salida llamada FINDTEXT.

    Creación de una salida en una aplicación`s interface.

Esta es otra manera de crear la salida.

UN UITextField objeto es un control que muestra el texto editable y envía un mensaje a su delegado cuando el usuario pulsa la tecla de retorno. Normalmente, se utiliza una UITextField objeto para que el usuario pueda introducir pequeñas cantidades de texto y luego hacer algo con él - como la búsqueda de algo o de añadir un nuevo contacto.

El icono de campo de texto en Xcode.

Seleccione el campo de texto, seleccione el editor estándar en el selector Editor en la barra de herramientas Xcode, y luego abra la Utilidad de la zona. Se puede establecer un número de propiedades del campo de texto en el inspector de atributos.

Vista previa de una aplicación en Xcode.

¿Cómo sabe que cuando el usuario ha introducido un texto? Además, ¿cómo se consigue el teclado para mostrar, y luego ocultar?

Cuando un usuario toca en una UITextField, Se convierte en el primer nivel de respuesta, y el teclado se eleva automáticamente para permitir al usuario introducir texto - usted no tiene que hacer nada para que esto suceda.

Cuando el usuario ha terminado de introducir el texto, que golpea ligeramente la tecla de retorno - la tecla de retorno cuya etiqueta se las arregló para cambiar a seguir.

Cuando se pulsa la tecla Go, el campo de texto determina si tiene un delegado y si el delegado ha implementado una textFieldShouldReturn: método - uno de los opcional UITextFieldDelegate métodos de protocolo. Si el delegado ha hecho así, envía el delegado del textFieldShouldReturn: mensaje. Asi que textFieldShouldReturn: es el lugar para capturar el texto.

Para capturar el texto y enviarlo a la FindController, lo que necesita para convertirse en delegado del campo de texto y aplicar el textFieldShouldReturn: método. Pero antes de hacer eso, es necesario hacer una cosa más en el Interface Builder.

Se empieza por hacer el MasterViewController un UITextFieldDelegate. Actualizar MasterViewController.h con el código en negrita para que se adopte el UITextFieldDelegate protocolo.

import @interface MasterViewController: UITableViewController@property (fuerte no atómica,) DetailViewController * @ detailViewController- propiedad (débil, no atómica) IBOutlet UITextField * FINDTEXT - d

El trabajo pesado se llevará a cabo en el de TextField textFieldShouldReturn: delegar método. El delegado se pasará el campo de texto que se está editando como un argumento, y el Maestro controlador de vista que va a pasar en el controlador de Buscar.

Video: Como Grabar La Pantalla De Tu iPhone ( NUEVA APP ) 2016

En primer lugar, usted tiene que actualizar el MasterViewController aplicación añadiendo el código en negrita de MasterViewController.m.

#importar "MasterViewController.h"#importar "DetailViewController.h"#importar "AppDelegate.h"#importar "Trip.h"#importar "FindController.h"@implementation MasterViewController

Tendrá que hacer MasterViewController el campo de texto delegar. Para ello, agregue el código en negrita para viewDidLoad en MasterViewController.m.

- (Void) viewDidLoad {[súper viewDidLoad] -AppDelegate * AppDelegate = [[UIApplication sharedApplication] delegado] -self.title = appDelegate.trip.destinationName-UIImageView * imageView = [[UIImageView alloc] initWithImage: [appDelegate.trip DestinationImage]] -self.tableView.backgroundView = imageView-UISwipeGestureRecognizer * swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget: acción de auto: @selector (handleSwipeGesture:)] - swipeGesture.direction = UISwipeGestureRecognizerDirectionleft; [self.view addGestureRecognizer: swipeGesture] - self.findText.delegate = auto}

Ahora se puede poner en práctica el textFieldShouldReturn: delegar método añadiendo el código de MasterViewController.m.

Se dará cuenta de algunos errores Emisión en directo aquí. Tendrá que añadir el findLocation alojamiento hasta el FindController.

- (BOOL) textFieldShouldReturn: (UITextField *) textField {[textField resignFirstResponder] -Si ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {FindController * findController = [[UIStoryboardstoryboardWithName: @"Main_iPad" paquete: nil] instantiateViewControllerWithIdentifier: @"Encontrar"] = -findController.findLocation TextField.text-DetailViewController * currentDetailViewController-currentDetailViewController = [self.splitViewController.viewControllers LastObject] -si (currentDetailViewController.masterPopoverController = nil!) [CurrentDetailViewController.masterPopoverControllerdismissPopoverAnimated: SÍ] -self.splitViewController.delegate = findController- findController.popOverButton = currentDetailViewController.popOverButton-findController.masterPopoverController = currentDetailViewController.masterPopoverController-NSMutableArray * controladores = [arrayWithObjects NSMutableArray: (self.splitViewController.viewControllers) [0], findController, nil] -self.splitViewController.viewControllers = controllers-} else {* findController findController = [[UIStoryboardstoryboardWithName: @"Main_iPhone"paquete: nil] instantiateViewControllerWithIdentifier: @"Encontrar"] = -findController.findLocation textField.text- [self.navigationControllerpushViewController: findController animado: SÍ] -}} retorno Si-

Lo primero que hace el código para usted es enviar un mensaje al campo de texto pidiéndole que renunciar como primer nivel de respuesta:

[TextField resignFirstResponder] -

Esto tiene el efecto secundario de despedir el teclado.

Video: Aplicacion para ipad y iphone para usar multisamples reales,soundfont pro

Lo que se hace a continuación es otro caso en lo que sucede depende de si la aplicación se está ejecutando en un iPad o iPhone.

Si está ejecutando en un iPad, se ejemplariza FindController de Main_iPad.storyboard.

FindController * findController = [[UIStoryboard storyboardWithName: @"Main_iPad" paquete: nil] instantiateViewControllerWithIdentifier: @"Encontrar"] -

A continuación, asigne el texto de campo de texto al FindController findLocation propiedad (que va a añadir en breve a la FindController).

findController.findLocation = textField.text-

A continuación, descartar el popover.

DetailViewController * currentDetailViewController-currentDetailViewController = [self.splitViewController.viewControllers LastObject] -si (currentDetailViewController.masterPopoverController = nil!) [CurrentDetailViewController.masterPopoverControllerdismissPopoverAnimated: SÍ] -

A continuación, se asigna el popOverButton y masterPopoverController propiedades y maquillaje FindController el delegado Dividir vista controlador.

self.splitViewController.delegate = findController-findController.popOverButton = currentDetailViewController.popOverButton-findController.masterPopoverController = currentDetailViewController.masterPopoverController-

Entonces sólo tiene que hacer FindController el nuevo Detallado controlador en el controlador de Vista dividida viewControllers propiedad.

NSMutableArray * controladores = [arrayWithObjects NSMutableArray: (self.splitViewController.viewControllers) [0], findController, nil] -self.splitViewController.viewControllers = controllers-

Tenga en cuenta que, si se trata de un iPhone que está tratando, se ejemplariza la FindController, asignar el findLocation propiedad, y empujarlo en la pila controlador de navegación, lo que provoca la vista a deslizarse en su lugar.

FindController * findController = [[UIStoryboardstoryboardWithName: @"Main_iPhone" paquete: nil] instantiateViewControllerWithIdentifier: @"Encontrar"] -findController.findLocation = textField.text- [self.navigationControllerpushViewController: findController animado: SI] -

Finalmente regresa tener el campo Texto implementar su comportamiento predeterminado.

Artículos Relacionados