我只在iPad上看到这个问题.同样的东西在iPhone上运行正常.
我在UIWebView中打开我的应用程序的URL.如果URL是普通网页,它可以正常工作.但是,如果URL是远程视频/音频文件的URL,则UIWebView会打开默认播放器,这又是好的.
现在,当我关闭UIWebView(通过点击播放器上的完成按钮)时,流媒体不会停止,音频/视频会在后台继续播放(我看不到它,但它确实在后台继续播放,可以听到它).创建webview的UIViewController也被解除分配(我在dealloc方法中放入了一个日志语句),但是流不会停止.
有人可以帮我解释为什么会发生这种情况吗?当UIWebView关闭时,如何停止音频/视频流?
谢谢.
我已经开放了webLink网址代码,Swift3但是当我使用它时,会给我这个警告;
在iOS 10.0中不推荐使用'openURL':请使用openURL:options:completionHandler:而不是
我如何解决它,我的代码如下.
let myUrl = "http://www.google.com"
if !myUrl.isEmpty {
UIApplication.shared.openURL(URL(string: "\(myUrl)")!)
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
我建立加载的应用程序小简单的HTML(本地)的量为单一全屏的UIWebView.我注意到滚动此Web视图与滚动任何其他UIScrollView 有很大不同.这似乎不是性能或响应性问题本身......这只是在向上和向下拖动和轻弹Web视图时动量如何发挥作用的问题.它只是感觉不是非常"原生"(因为没有更好的词).这就像滚动糖蜜或布丁......有点"粘"而不像你想要的那样"光滑".
有谁知道是什么原因造成的?有没有办法解决它,或者至少使滚动UIWebView感觉更"原生"?
我有一个UIViewController中包含的UIWebView,它是UINavigationController的后代.它看起来像这样:

该应用程序仅限肖像.当我播放视频时,我希望用户能够旋转设备并以横向模式观看视频.我使用这段代码来允许它:
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
id presentedViewController = [self topMostController];
NSString *className = presentedViewController ? NSStringFromClass([presentedViewController class]) : nil;
if ([className isEqualToString:@"MPInlineVideoFullscreenViewController"] ||
[className isEqualToString:@"MPMoviePlayerViewController"] ||
[className isEqualToString:@"AVFullScreenViewController"]) {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
return UIInterfaceOrientationMaskPortrait;
}
- (UIViewController *)topMostController {
UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
return topController;
}
Run Code Online (Sandbox Code Playgroud)
然后在我的UINavigationController中(所以当视频完成后,视图不会以横向呈现,只能以纵向呈现):
- (BOOL)shouldAutorotate
{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
Run Code Online (Sandbox Code Playgroud)
一切都很完美:

但是视频完成播放(或者用户点击'完成')并且屏幕返回到底层视图,这是发生的事情:

如您所见,导航栏在状态栏下滑动.另外,我在日志中遇到了很多自动布局错误:http …
objective-c uiwebview uinavigationcontroller screen-rotation ios
在提交我的最新版本时,Apple突然返回一条消息,指出存在问题,特别是:
ITMS-90809:不推荐使用的API-Apple将停止接受使用UIWebView API的应用程序的提交。有关更多信息,请参见https://developer.apple.com/documentation/uikit/uiwebview。
由于我没有使用webview插件,所以我对使用的位置一无所知UIWebView API。关于如何解决这个问题的任何建议?
最新的稳定flutter版本1.7.8 + hotfix.4并包含以下软件包会出现此错误:
http: ^0.12.0
shared_preferences: ^0.4.3
intl: any
permission_handler: ^2.1.2
contacts_service: ^0.2.8
image: ^2.0.5
cached_network_image: ^1.0.0
url_launcher: ^5.0.1
path_provider: ^0.5.0+1
after_layout: ^1.0.7
connectivity: ^0.4.3+1
device_info: ^0.4.0+2
firebase_auth: ^0.11.1+7
firebase_messaging: ^5.1.2
firebase_analytics: ^5.0.0
notification_permissions: ^0.4.0
Run Code Online (Sandbox Code Playgroud)
所有软件包都已更新为最新版本。
输出flutter doctor为:
[?] Flutter (Channel stable, v1.7.8+hotfix.4, on Mac OS X 10.14.6 18G87, locale en-US)
• Flutter version 1.7.8+hotfix.4 at /Users/per/flutter
• Framework revision 20e59316b8 (6 weeks ago), 2019-07-18 20:04:33 -0700
• Engine …Run Code Online (Sandbox Code Playgroud) 对不起,我会亲自测试一下,但我现在没有我的mac.在UIWebView内部发出的Web请求是否发送了与移动Safari发出的Web请求相同的用户代理信息?
我想从我的iPhone应用程序播放YouTube视频.我必须尝试使用以下代码在我的iPhone应用中播放YouTube视频,
[self playVideo:@"http://www.youtube.com/watch?v=WL2l_Q1AR_Q" frame:CGRectMake(20, 70, 280, 250)];
- (void)playVideo:(NSString *)urlString frame:(CGRect)frame
{
NSString *embedHTML = @"\
<html><head>\
<style type=\"text/css\">\
body {\
background-color: transparent;\
color: white;\
}\
</style>\
</head><body style=\"margin:0\">\
<embed id=\"yt\" src=\"%@\" type=\"application/x-shockwave-flash\" \
width=\"%0.0f\" height=\"%0.0f\"></embed>\
</body></html>";
NSString *html = [NSString stringWithFormat:embedHTML, urlString, frame.size.width, frame.size.height];
UIWebView *videoView = [[UIWebView alloc] initWithFrame:frame];
[videoView loadHTMLString:html baseURL:nil];
[self.view addSubview:videoView];
[videoView release];
NSLog(@"%@",html);
}
Run Code Online (Sandbox Code Playgroud)
但是,这段代码对我不起作用.而且我也试过MPMoviePlayerController代码是,
NSURL *fileURL = [NSURL URLWithString:@"http://www.youtube.com/watch?v=WL2l_Q1AR_Q"];
MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
[moviePlayerController.view setFrame:CGRectMake(0, 70, 320, 270)];
[self.view …Run Code Online (Sandbox Code Playgroud) 在开始之前,我应该告诉你,这只发生在iOS 5.1中.在最近的更新之前,这从未发生过,并且它仍然不会发生在任何其他版本上.那就是说,这是正在发生的事情.
当用户退出我的应用程序时,发生的一件事就是NSUserDefaults删除了所有内容.而不是手动删除我可能添加到用户默认值的每个键,我只是NSUserDefaults使用此SO问题中建议的方法完全删除所有键:
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
Run Code Online (Sandbox Code Playgroud)
然而,似乎发生了什么,每次我尝试创建一个UIWebView删除后NSUserDefaults,我得到一个EXC_CRASH (SIGABRT).当我打电话时发生了崩溃[[UIWebView alloc] initWithFrame:frame].奇怪吧?完全退出并重新打开应用程序可以UIWebView再次创建s.
所以,我设法找出删除默认值会导致UIWebView问题,但可以肯定的是,我添加了一个符号断点-[NSUserDefaults setObject:forKey:].
![- [NSUserDefaults setObject:forKey:]断点](https://i.stack.imgur.com/0ODbq.png)
创建UIWebView确实会触发断点.
浏览崩溃日志给出了例外原因:
-[__NSCFDictionary setObject:forKey:]: attempt to insert nil value (key: WebKitLocalStorageDatabasePathPreferenceKey)
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪的开始:
0 CoreFoundation 0x3340688f __exceptionPreprocess + 163
1 libobjc.A.dylib 0x37bd4259 objc_exception_throw + 33
2 CoreFoundation 0x33406789 +[NSException raise:format:] + 1
3 CoreFoundation 0x334067ab +[NSException raise:format:] + 35 …Run Code Online (Sandbox Code Playgroud) 我有一个HTML表单,其中包含我在UIWebview中打开的某些字段.点击特定按钮后,我想进行应用操作.
我现在使用的方法是点击按钮,我将页面重定向到虚拟URL.我使用委托方法"shouldStartLoadWithRequest"嗅探URL并停止重定向.然后,我做我的自定义事件(捕获图像和上传),然后继续.这似乎是一个丑陋的黑客.无论如何,我可以直接挂钩按钮点击事件而不是页面重定向?
更新 当按钮单击调用JS函数时,似乎无法设置要触发的委托方法.唯一的方法是使用上面提到的URL嗅探方法.这个已经由joern在下面详细解释过,所以我会接受他的回答.
我成功地获取HTML内容并显示到我的UIWebView中.
但是想要通过添加外部CSS文件来自定义内容.我只能改变文字和字体的大小.我尝试了所有可能的解决方案来进行更改,但它不起作用 - 它没有显示任何变化.
以下是我的代码
HTMLNode* body = [parser body];
HTMLNode* mainContentNode = [body findChildWithAttribute:@"id" matchingName:@"main_content" allowPartial:NO];
NSString *pageContent = [NSString stringWithFormat:@"%@%@", cssString, contentHtml];
[webView loadHTMLString:pageContent baseURL:[NSURL URLWithString:@"http://www.example.org"]];
-(void)webViewDidFinishLoad:(UIWebView *)webView1{
int fontSize = 50;
NSString *font = [[NSString alloc] initWithFormat:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '%d%%'", fontSize];
NSString *fontString = [[NSString alloc] initWithFormat:@"document.getElementById('body').style.fontFamily=\"helvetica\""];
[webView1 stringByEvaluatingJavaScriptFromString:fontString];
[webView1 stringByEvaluatingJavaScriptFromString:font];
}
Run Code Online (Sandbox Code Playgroud)
请帮助我在我的视图中获取css样式表.
uiwebview ×10
ios ×8
iphone ×4
objective-c ×3
cocoa-touch ×1
flutter ×1
ipad ×1
javascript ×1
onclick ×1
swift3 ×1
uiscrollview ×1
user-agent ×1
wkwebview ×1
youtube ×1