ios – 没有调光的UISearchDisplayController?

前端之家收集整理的这篇文章主要介绍了ios – 没有调光的UISearchDisplayController?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个SplitView iPad应用程序.在DetailViewController中,有一个包含UITableView和UISearchBar及其控制器的小视图.此视图不代表为DetailViewController保留的整个屏幕空间.实际上,它只使用了一半.另一半有一个UI ImageView.

这就是麻烦的来源:每次我使用搜索栏时,displaycontroller(我都假设)会使DetailViewController中的所有内容变暗,包括图像视图.这与人们在运行应用程序时的期望不一致.有没有办法将框架设置为暗灰色?或者至少禁用调光效果好?

提前致谢.

解决方法

你是正确的,正是UISearchDisplayController正在管理你所看到的“调光”效果.

UISearchDisplayController正在做的是将一个UIControl作为子视图添加到searchContentsController(UISearchDisplayController的一个属性)的视图中,这可能是您的详细视图控制器.这个UIControl只是一个灰色背景的alpha’d视图.它似乎有一个触摸式内部事件处理程序,在点击时结束搜索.

要将调光效果限制在细节视图的子视图中,您需要做三件事. (我假设您的详细视图控制器是通过xib定义的.如果没有,这些步骤也可以在代码中完成.)

1)在你的detail-view-controller xib中添加一个新的UIViewController.将此新视图控制器附加到详细视图控制器的IBOutlet.在我的例子中,我称之为“_searchAreaViewController”.这很重要,即使你不会访问视图控制器(但请记住,你必须在某个时候释放它)

@interface DetailViewController : UIViewController <UIPopoverControllerDelegate,UISplitViewControllerDelegate,UITableViewDelegate,UITableViewDataSource> {

    UIPopoverController *popoverController;
    UIToolbar *toolbar;

    id detailItem;
    UILabel *detailDescriptionLabel;

    IBOutlet UIViewController* _searchAreaViewController;
}

2)使搜索区域的包含视图成为这个新视图控制器的视图.要执行此操作,请使用Interface Builder通过将插座拖动到searchAreaViewController并选择“视图”插座来为此视图设置新的参考插座.你必须有一个包含视图 – 它应该是你的详细视图的子视图,它应该包含UISearchBar,可能包含你的UITableView.

3)使UISearchDisplayController的searchContentsController属性引用这个新的视图控制器而不是detail-view-controller.这只能通过Interface Builder来完成,因为属性是只读的(IB有一些神奇的功能可以使它工作吗?)如果你需要通过代码执行这一步,你必须继承UISearchDisplayController并从中返回正确的值.属性覆盖“searchContentsController”.

我做了一个示例应用程序来演示这个,我必须添加到SplitView模板的唯一代码行是上面步骤1中列出的代码.其他一切只是添加视图/控制器并在IB中正确连接它们.

祝好运!

猜你在找的iOS相关文章