Tiene razón en que es el UISearchDisplayController el que está administrando el efecto de "atenuación" que está viendo.
Lo que el UISearchDisplayController está haciendo es agregar un UIControl como una subvista a la vista de searchContentsController (una propiedad de UISearchDisplayController), que probablemente sea su controlador de vista de detalles. Este UIControl es solo una vista alfabética con fondo gris. Parece tener un controlador de eventos de retoque interno que finaliza la búsqueda cuando se toca.
Para restringir el efecto de atenuación a su subvista de la vista de detalles, debe hacer tres cosas. (Supongo que su controlador de detalle-vista se define a través de un xib. De lo contrario, estos pasos también se pueden hacer en código.)
1) agregue un nuevo UIViewController a su xib de controlador view-detail. Adjunte este nuevo controlador de vista a una IBOutlet de su detalle-vista-controlador. En mi ejemplo, yo llamo a esto "_searchAreaViewController". Esto es importante, incluso si usted no siempre accede al controlador de vista (pero recuerde, usted tiene que liberarlo en algún momento)
@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UISplitViewControllerDelegate, UITableViewDelegate, UITableViewDataSource> {
UIPopoverController *popoverController;
UIToolbar *toolbar;
id detailItem;
UILabel *detailDescriptionLabel;
IBOutlet UIViewController* _searchAreaViewController;
}
2) hacer que la vista que contiene para su área de búsqueda de la vista de esta nueva controlador de vista. Para hacer esto, use Interface Builder para establecer una nueva salida de referencia para esta vista arrastrando la salida a searchAreaViewController y seleccionando la salida "view". Debe tener una vista contenedora: debe ser una subvista de su vista detallada, y debe contener UISearchBar y probablemente su UITableView.
3) hacer que la propiedad searchContentsController del UISearchDisplayController se refiera a este nuevo controlador de vista en lugar de a detail-view-controller. Esto solo se puede hacer a través de Interface Builder ya que la propiedad es de solo lectura (IB tiene algo de magia para hacer que esto funcione). Si necesita hacer este paso a través del código, tendrá que subclasificar el UISearchDisplayController y devolver el valor correcto de un anulación de propiedad de "searchContentsController".
Hice una aplicación de muestra para demostrar esto y la única línea de código que tuve que agregar a la plantilla SplitView fue la que figura en el paso 1 anterior. Todo lo demás era simplemente agregar las vistas/controladores y conectarlos adecuadamente en IB.
buena suerte!
Después de hacer eso, el área todavía se oscurece ... Mi única duda es en el paso número 2. Al vincular la vista al controlador de vista, se convierte en una salida tanto para el controlador de vista de detalles como para el buscadorAvistaViewController. ¿Es eso correcto? Si elimino la referencia al controlador de vista detallada, la aplicación se bloquea al inicio. –
No, solo debería ser la vista para el nuevo "searchAreaViewController". Esta vista debe ser una subvista de la vista de DetailViewController. ¿Es eso lo que tienes? – TomSwift
Aquí, publiqué un proyecto de muestra para usted, aquí: http://goo.gl/Gv1NH – TomSwift