我有一个UISearchBis部分的UISearchDisplayController,用于显示本地CoreData和远程API的搜索结果.我想要实现的是远程API搜索的"延迟".目前,对于用户键入的每个字符,发送请求.但是如果用户输入特别快,那么发送许多请求就没有意义:等到他停止输入会有所帮助.有没有办法实现这一目标?
阅读文档建议等到用户明确点击搜索,但我发现在我的情况下并不理想.
性能问题.如果可以非常快速地执行搜索操作,则可以通过在委托对象上实现searchBar:textDidChange:方法来在用户键入时更新搜索结果.但是,如果搜索操作需要更多时间,您应该等到用户点击搜索按钮,然后再在searchBarSearchButtonClicked:方法中开始搜索.始终执行后台线程的搜索操作以避免阻塞主线程.这可以使您的应用在搜索运行时对用户做出响应,并提供更好的用户体验.
向API发送许多请求不是本地性能的问题,而是避免远程服务器上的请求率过高.
谢谢
我正在尝试使用QLPreviewController显示文件.QL视图正确显示(被推送到我的导航控制器顶部)但内容为空白.但是,不会显示任何错误,应用程序也不会崩溃.检查文件是否存在返回true.(一个证据是,如果我使用[self.docInteractionController presentPreviewAnimated:YES];docInteractionController UIDocumentInteractionController是正确显示的文件).
代码直接取自Apple示例代码DocInteraction.
previewController.dataSource = self;
previewController.delegate = self;
// start previewing the document at the current section index
previewController.currentPreviewItemIndex = 0; //I want the first (and only) document
[[self navigationController] pushViewController:previewController animated:YES];
[previewController release];
Run Code Online (Sandbox Code Playgroud)
当前视图是a QLPreviewControllerDataSource, QLPreviewControllerDelegate,,委托方法如下:
- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
{
return self.documentURLs.count;
}
- (id)previewController:(QLPreviewController *)previewController previewItemAtIndex: (NSInteger)index
{
return [self.documentURLs objectAtIndex:index];
}
Run Code Online (Sandbox Code Playgroud)
documentURLs是一个包含文档的fileURL的NSArray.相同的fileURL UIDocumentInteractionController正确传递给显示器.我不一定要使用QuickLook,我可能只是依赖于UIDocumentInteractionController,但事实上它不起作用真的很烦人.
先感谢您
乔瓦尼
我正在实现一个无限滚动的日历.我的问题是我想将当前月份设置为导航栏中的标题,并且它应该在滚动时更新 - 一旦您传递了标题标题视图,标题应该在导航栏中更新.
一种可能的解决方案是在被调用的方法中设置视图标题,- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath这样,当我计算新的节标题时,它也会更新标题.这个问题是当新部分位于页面底部时标题会发生变化.

有没有办法知道UICollectionView用户滚动到它后的"当前部分" ?或者您能想出一种改进现有解决方案的方法吗?
为了帮助这篇文章的读者,我在这个GitHub回购中发布了我自己的这个问题的示例代码.
objective-c nsindexpath ios uicollectionview uicollectionreusableview
我正在尝试实现一个选择表视图,就像在"设置"应用程序中一样,用于在iOS应用程序中选择时区,其中时区显示格式正确的城市和国家/地区名称.
从文档中,该+ (NSArray *)knownTimeZoneNames方法按字母顺序返回时区的所有"ID",但不按"时间"顺序返回,这些名称非常难以阅读,例如America/New_York.所有其他方法NSTimeZone返回本地化名称,例如中央时间的"中央标准时间".然而,这些名称对大多数用户来说没有任何意义,因为它们用于推断"城市"而不是"时区"(特别是在欧洲).
有没有办法使用NSTimeZone自己的方法实现与设置应用程序中的表示相同的表示,或者我应该自己构建时区和城市的数据库?

您知道一种方法来检测用户何时滚动到UICollectionView的末尾(或开始)(以便加载新内容)。由于UICollectionView是水平滚动而不是垂直滚动,因此我对滚动到顶部/底部而不是最左侧/最右侧不感兴趣。
到目前为止,我发现的唯一方法是将UICollectionView子类化,然后将视图控制器注册为一个委托,该委托将通知何时收集视图 willLayoutSubviews并相应地执行计算。
但是,让我们说我不想继承UICollectionView,有没有一种方法可以检测到UICollectionView的结束/开始滚动?
编辑:由于UICollectionView继承自UIScrollView,所以我可以使用其委托方法。水平滚动如何使用?
谢谢