Iphone 选择选项卡栏项目后激活UISearchBar-帮助还是障碍?

Iphone 选择选项卡栏项目后激活UISearchBar-帮助还是障碍?,iphone,uitabbarcontroller,uisearchbar,uisearchdisplaycontroller,Iphone,Uitabbarcontroller,Uisearchbar,Uisearchdisplaycontroller,我正在开发一个应用程序,其中我被要求使用自己的专用搜索功能向我们的应用程序添加一个UITabBarItem。除此之外,还可以点击其他UITableView并搜索其他UITableView,在整个应用程序中进行内置搜索 现在,首先想到的是苹果人机界面指南HIG,其中规定: 避免使用选项卡进行搜索,除非 它是您的应用程序中的主要功能 应用程序的特征应为 独特的模式 因此,流行的想法是避免,但这不是一个硬性规定。不过,我还是让客户注意到了这一点。他们回答说:我们担心人们不知道在那些其他的uitable

我正在开发一个应用程序,其中我被要求使用自己的专用搜索功能向我们的应用程序添加一个UITabBarItem。除此之外,还可以点击其他UITableView并搜索其他UITableView,在整个应用程序中进行内置搜索

现在,首先想到的是苹果人机界面指南HIG,其中规定:

避免使用选项卡进行搜索,除非 它是您的应用程序中的主要功能 应用程序的特征应为 独特的模式

因此,流行的想法是避免,但这不是一个硬性规定。不过,我还是让客户注意到了这一点。他们回答说:我们担心人们不知道在那些其他的uitableView和uitableView中寻找搜索。我的回答是:苹果自己的应用程序提供了这种搜索体验。任何已经使用这些应用程序的人都会知道如何使用你的应用程序。这就是为什么我们希望UE保持一致并努力遵循HIG。更不用说这是AppStore批准的一项要求,但我离题了

嗯。。他们的第二个回答是:好的,这很有意义,但我们也希望人们能够搜索所有内容,而不仅仅是不同表视图中的特定主题

很好。全球搜索是:

为了寻找一个带有专用搜索工具uitabaritem的例子,我遵循了iPhone自己的应用商店模式。我对最终的UI非常满意。在UISearchBar中键入时,您只会得到一个简单的文本,在键入时搜索建议名称列表,并以最小的键入时间延迟完成,以避免淹没搜索服务器。您可以调整搜索文本,点击其中一个建议以代替搜索词,或者直接点击搜索按钮。然后,结果列表将被一组更奇特的结果所取代,这些结果以更全文的方式进行搜索,每个单元格中都有图标和一些有用的元数据。通常的配料。点击UISearchBar返回纯文本建议。取消搜索将删除所有内容。不使用它,可以显示最后的查询结果列表

所以我把这个给了客户。。。和他们喜欢!!他们只有最后一个请求:当我们选择专用的搜索工具时,键盘能立即弹出吗?现在我们必须点击UISearchBar,但这太多了

大概他们只希望在没有预先存在的搜索的情况下发生这种情况

起初我认为这是合理的。。。但后来我看了其他应用程序。我找不到这样做的人。即使是App Store应用程序也要求您点击UISearchBar以打开键盘。此外,HIG还表示:

当用户点击搜索栏时,会显示 键盘出现

当用户点击搜索UITabBarItem时,不会出现键盘

此外,用户界面应该是宽容的。如果您犯了一个错误,打算在“更多”列表中选择另一项,该怎么办?或者,如果它位于选项卡栏上,那么如果您想选择不同的UITabBarItem呢?现在,您必须停止并取消搜索以关闭键盘,即使您不是有意打开它


总而言之,我有点不知所措,希望了解一下最佳实践和其他POV。在这种情况下你会怎么做?

有人刚刚给我提了一个有趣的想法。如果你点击并按住搜索选项的时间比平时稍长一点,或者如果你双击它,这可能是我们提示自动打开键盘的提示。否则,它的行为方式与iPhone UI生态系统的其他部分相同

只要有可能检测到Uitabritem和UITableViewCell的点击和瞬时保持或双击,这听起来似乎是合理的。iPhone相当于按住Option或Cmd键

还有一个建议:如果“更多”列表中有搜索选项,请打开键盘。如果由于用户将它放在选项卡栏上,所以它正确地位于选项卡栏上,那么首先不要显示键盘。嗯,这似乎有点不一致,但我在这里提到它是为了完整性


想法?

一些答案,大多忽略了你是否应该这样做:

通过将搜索字段设置为第一响应者,可以使键盘自动显示:

[mySearchField becomeFirstResponder];
选项卡栏上最多可以有五个项目,如果超过五个,实际上只能得到四个,因为更多的项目占用空间。items属性的UITabBar文档说明:

在选项卡栏上可见的项,即uitabaritem的实例,它们在该数组中的显示顺序

因此,您可以确定搜索项是否在栏中,而不是像此代码这样的“更多”部分中,假定它在“搜索视图”控制器中:

UITabBarItem *item = [self tabBarItem];
NSInteger indexOfTabBarItem = [[tabBar items] indexOfObject:item];
BOOL isInMainTabBar = (indexOfTabBarItem > -1) && (indexOfTabBarItem < 4);
我个人认为,当你第一次进入搜索页面时自动显示键盘并不太糟糕,因为这就是你要做的全部。当然,问题是 如果你只是点击一些随机的东西看看它能做什么,那么取消搜索是一件痛苦的事情,这样你就可以继续你的随机点击了


编辑:该死,我误解了你的问题-我以为你在寻求技术建议。好这可能对某人有用

谢谢!是的,从技术角度来看,我被涵盖了,但很高兴看到你的建议与此相符。另外,其他阅读本文的人可能不知道,因此无论如何,我们都非常感谢!我的一部分希望避免混淆已经存在的生态系统,但另一部分理解让键盘出现的愿望。请参阅我关于双击作为备选方案的回答。。。只有在UITabBar的moreNavigationController中才能做到这一点?不能子类化,也不能使用类别!反对点击并保持的参数:已用于表视图中的编辑切换。反对双击的论点:不能在moreNavigationController的表视图中对类别进行子类化或使用类别,因为它不可触及。因此,我们要么与苹果在应用商店的搜索引擎上的做法不同,要么保持一致。