选择标签栏项目 - 帮助还是阻碍时激活UISearchBar?

时间:2009-09-03 19:32:33

标签: iphone uitabbarcontroller uisearchbar uisearchdisplaycontroller

我正在开发一个应用程序,我被要求在我们的应用程序Tab Bar中添加 UITabBarItem ,并使用自己的专用搜索功能。这是整个应用程序中内置搜索的补充(通过点击其他 UITabBarItem 并搜索其他 UITableView )。

现在,首先想到的是Apple人机界面指南( HIG ),其中指出:

  

“避免使用标签进行搜索,除非   它是你的主要功能   应该作为特色的应用程序   一种独特的模式。“

所以流行的想法是避免,但这不是一个硬性规定。尽管如此,我还是把它引起了客户的注意。他们回答说:“我们担心人们不会知道在其他 UITabBarItem UITableView 中查找搜索。”我的回答是:“Apple自己的应用程序提供了这种搜索体验。任何已经使用过这些应用程序的人都会知道如何使用你的应用程序。这就是我们希望UE保持一致并努力追随HIG的原因。” (更不用说它是应用程序商店批准的要求,但我离题了。)

嗯..他们的第二个响应是:“好的,这是有道理的,但我们也希望人们能够搜索所有内容,而不仅仅是在不同的表视图中的特定主题。 “

非常好。它是全球搜索。 :)

寻找专用搜索 UITabBarItem 的示例,我遵循了iPhone自己的App Store模型。我对由此产生的UI感到非常满意。在 UISearchBar 中键入时,您将获得一个简单的纯文本,即搜索类型的建议名称列表(完成最小的键入时间延迟,以免压倒搜索服务器)。您可以调整搜索文本,点按其中一个建议以代替搜索字词,或者直接点按“搜索”按钮。然后将结果列表替换为更高级的结果集,以更全文的方式搜索,在每个单元格中使用图标和有用的元数据位。通常的成分。点击 UISearchBar 会返回纯文字建议。取消搜索会删除所有内容。单独保留最后一个查询(结果列表)可供显示。

所以我向客户提出 this ......并且...... 他们喜欢它 !!他们只有最后一个请求:“当我们选择专用搜索 UITabBarItem 时,键盘是否可以立即弹出?现在我们必须点击 UISearchBar ,但这也是一次点击许多“。

(据推测,只有在没有预先存在的搜索功能的情况下,他们才希望这种情况发生。)

起初我认为这似乎是合理的......但后来我查看了其他应用程序。我找不到执行此操作的任何。即使是App Store应用程序也需要点击 UISearchBar 来调出键盘。另外, HIG 表示同样多:

  

“当用户点按搜索栏时,a   键盘出现。“

不是“当用户点击搜索 UITabBarItem 时,会出现一个键盘。”

此外,UI应该是宽容的。如果您犯了错误并打算在更多列表中选择其他项目,该怎么办? (或者,如果它位于标签栏上,如果您打算选择不同的 UITabBarItem ,该怎么办?)现在您必须停止并取消搜索以关闭键盘,即使你不是故意提起它。

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

2 个答案:

答案 0 :(得分:0)

有人刚刚给我提了一个有趣的想法。如果你点击并保持搜索选项只是比平常更长一点,或者你点击它,这可能是我们提示自动调出键盘。否则,它的行为与iPhone UI生态系统的其他部分相同。

只要能够检测到 UITabBarItem UITableViewCell 的点击和瞬间保持或双击,这听起来似乎有道理。 iPhone相当于按住Option或Cmd。

另一个建议:如果搜索选项位于更多列表中,请调出键盘。如果它位于标签栏正确(因为用户将其放在那里),请不要首先显示键盘。 (嗯。这似乎有些不一致,但我在这里提到完整性。)

思想?

答案 1 :(得分:0)

一些答案​​,大多数时候无视你是否应该这样做:

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

[mySearchField becomeFirstResponder];

标签栏上可以包含的项目最多为5个,如果超过5个,则实际上只有4个,因为“更多”项占用空格。 items属性的UITabBar文档声明:

  

项目,UITabBarItem的实例,在标签栏上按照它们在此数组中出现的顺序可见。

因此,您可以确定搜索项是否在条形图(而不是更多部分)中(代码假定它位于搜索视图控制器中):

UITabBarItem *item = [self tabBarItem];
NSInteger indexOfTabBarItem = [[tabBar items] indexOfObject:item];
BOOL isInMainTabBar = (indexOfTabBarItem > -1) && (indexOfTabBarItem < 4);

我个人认为,当你第一次进入搜索页面时,自动显示键盘并不算太糟糕,因为这就是你要做的全部。当然,问题在于,如果你只是点击随机的东西来查看它的作用,取消搜索就很麻烦,这样你就可以恢复随机点击。

编辑:Damnit,我误解了你的问题 - 我以为你在寻找技术建议。嗯......这可能对某人有用!