我正在iOS中开发WIFI IP Camera。 APP可以通过WiFi连接到WIFI IP摄像头。
我可以在IP Camera上获取所有文件列表,也可以从WIFI IP Camera下载文件。
所以我有两个文件列表。一个是WIFI IP Camera上的文件列表,另一个是从WIFI IP Camera下载的文件列表。
我使用 CustomIOS7AlertView
通过WIFI 查看WIFI IP摄像机上的文件,如下面的代码。
UIImage *urlImage = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:url]];
UIView *demoView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 290, 200)];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 270, 180)];
[imageView setImage:urlImage];
[imageView setContentMode:UIViewContentModeScaleAspectFit];
[demoView addSubview:imageView];
// Here we need to pass a full frame
CustomIOS7AlertView *alertView = [[CustomIOS7AlertView alloc] init];
// Add some custom content to the alert view
[alertView setContainerView:demoView];
// Modify the parameters
[alertView setButtonTitles:[NSMutableArray arrayWithObjects:@"OK", nil]];
[alertView setDelegate:self];
// You may use a Block, rather than a delegate.
[alertView setOnButtonTouchUpInside:^(CustomIOS7AlertView *alertView, int buttonIndex) {
for(NSIndexPath *indexPath in self.collectionView.indexPathsForSelectedItems){
[self.collectionView deselectItemAtIndexPath:indexPath animated:NO];
}
[alertView close];
}];
[alertView setUseMotionEffects:true];
使用以下代码查看从WIFI IP Camera下载的本地文件。
url = [NSURL fileURLWithPath: filePath] ;
documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:url];
[documentInteractionController setDelegate:self];
[documentInteractionController presentPreviewAnimated:YES] ;
第一次在WIFI网络摄像机上查看文件时, CustomIOS7AlertView
工作正常。
但 CustomIOS7AlertView
在我通过UIDocumentInteractionController
查看本地文件后,想要查看WIFI IP Camera上的文件时没有显示。
使用CustomIOS7AlertView
后似乎隐藏了 UIDocumentInteractionController
。
我错过了什么吗?
提前致谢。
答案 0 :(得分:1)
我认为UIDocumentInteractionController
可能会在您使用window
之后留下我们不需要的额外UIDocumentInteractionController
,当您再次致电CustomIOS7AlertView
时,可能会将其添加到错误的窗口,我们无法看到AlertView。
这是我的解决方案:
在添加到窗口之前,请确保 showsViewMethod 中的CustomIOS7AlertView
具有最顶层的窗口检查,如下所示:
NSEnumerator *frontToBackWindows = [UIApplication.sharedApplication.windows reverseObjectEnumerator];
for (UIWindow *window in frontToBackWindows){
BOOL windowOnMainScreen = window.screen == UIScreen.mainScreen;
BOOL windowIsVisible = !window.hidden && window.alpha > 0;
BOOL windowLevelNormal = window.windowLevel == UIWindowLevelNormal;
if (windowOnMainScreen && windowIsVisible && windowLevelNormal) {
if(!self.superview){
//assume self is CustomIOS7AlertView or it's subView will be added to window
[window addSubview:self];
}
break;
}
}
希望这对你有帮助!