0

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

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

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

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

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

很好。全球搜索它是。:)

寻找一个带有专用搜索UITabBarItem的示例,我遵循了 iPhone 自己的 App Store 模型。我对最终的 UI 感到非常满意。在UISearchBar中输入时,您会得到一个简单的纯文本、在输入时搜索的名称建议列表(以最小的输入时间延迟完成,以免使搜索服务器不堪重负)。您可以调整搜索文本,点击其中一个建议来代替您的搜索词,或者直接点击“搜索”按钮。然后将结果列表替换为更精美的结果集,以更全文的方式进行搜索,每个单元格中都有图标和有用的元数据。常用的成分。点击UISearchBar带回纯文本建议。取消搜索会删除所有内容。不理会它会保留最后一个查询(结果列表)以供显示。

所以我把这个介绍给客户......并且......他们喜欢它!他们只有最后一个请求:“当我们选择专用的 Search UITabBarItem时,键盘可以立即弹出吗?现在我们必须点击UISearchBar,但点击太多了。”

(大概他们希望只有在没有预先存在的搜索在起作用的情况下才会发生这种情况。)

起初我认为这是合理的......但后来我查看了其他应用程序。我找不到任何这样做的。即使是 App Store 应用程序也要求您点击UISearchBar来调出键盘。另外,HIG也说了这么多:

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

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

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

总之,我有点心烦意乱,并希望了解最佳实践和其他 POV。在这种情况下你会怎么做?

4

2 回答 2

0

A few answers, mostly ignoring whether you should actually do this or not:

You can make the keyboard appear automatically by setting the search field as the first responder:

[mySearchField becomeFirstResponder];

The most items you can have on a tab bar is five, and if you have more than five you actually only get four, since the More item takes up a space. The UITabBar documentation for the items property states:

The items, instances of UITabBarItem, that are visible on the tab bar in the order they appear in this array.

Therefore, you can determine if the search item is in the bar (rather than the More section) like this (code assumes it's in the search view controller):

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

I personally think that it isn't too bad to show the keyboard automatically when you first go to the search page, since that's all you're going to do. Of course, the problem is that if you're just clicking on random stuff to see what it does, it's a pain to cancel the search so you can resume your random clicking.

Edit: Damnit, I misread your question - I thought you were looking for technical advice. Well... this might be useful to someone!

于 2009-09-03T20:17:34.250 回答
0

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

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

还有一个建议:如果“搜索”选项在“更多”列表中,请调出键盘。如果它在标签栏上(因为用户把它放在那里),首先不要显示键盘。(嗯。这似乎有点不一致,但我在这里提到它是为了完整性。)

想法?

于 2009-09-03T20:00:26.117 回答