2010-06-09 13 views
7

Oye, estaba trabajando en una aplicación basada en navegación en iPhone similar a la aplicación de contactos. Cuando ingresa algo en la barra de búsqueda y se desplaza por la tabla (en la aplicación de contactos), el teclado desaparece. No obstante, creo que no se resignan los primeros respondedores, porque cuando intento hacer eso en - (void) scrollViewDidScroll: (UIScrollView *) scrollView, deshabilita el botón de cancelar, lo que no sucede en la aplicación de contactos. Básicamente mi pregunta es ¿cómo descarto el teclado sin deshabilitar el botón cancelar, como en la aplicación de contactos?Descartar el teclado con UISearchBar, sin renunciar a la primera respuesta

Gracias

+1

WOW. Jaja, el tutorial que utilicé no usó un controlador de pantalla de búsqueda, por la razón que sea ... Usar eso hace que haga exactamente lo que quiero. Es gracioso, porque incluso coincidí con la sensación de oscuridad de la superposición que ocurre cuando comienzas a buscar, pero ahora sucede dos veces, por lo que se pone realmente oscuro. – Mike

Respuesta

0

(Como se insinúa en el comentario de auto-respuesta) Si desea obtener el comportamiento de búsqueda tabla como la aplicación de contactos incorporada, no se puede simplemente una palmada a un UISearchBar en una vista con una UITableView , en su lugar, debe utilizar un UITableViewController junto con un Search Display Controller. Esta aplicación muestra es una guía perfecta:

https://developer.apple.com/library/ios/#samplecode/TableSearch/Introduction/Intro.html

3

Bueno, acabo de encontrar con esta misma vieja pregunta. Puede activar el botón 'cancelar' cuando se empieza a desplazarse de la siguiente manera:

func scrollViewWillBeginDragging(scrollView: UIScrollView) { 
    searchBar.resignFirstResponder() 
    let searchCancelButton = searchBar.valueForKey("cancelButton") as! UIButton 
    searchCancelButton.enabled = true // <-- THIS line is the trick 

} 

Swift 4

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { 
    searchBar.resignFirstResponder() 
    let cancelButton = searchBar.value(forKey: "cancelButton") as! UIButton 
    cancelButton.isEnabled = true 
} 
+0

¡Sí! ¡Realmente funciona! –

+0

Excelente respuesta. Sintaxis actualizada para Swift 4 –

Cuestiones relacionadas