我正在尝试将网页加载到WKWebView中,其中包含响应式JS文本到语音。网页自动完成加载后播放文本到语音。
但是在应用程序内部,文本到语音自动播放在页面加载时不起作用。它只有在我通过按钮点击应用程序内部启动javascript方法时才有效。
加载页面时是否可以自动播放?如果可能的话我怎样才能完成它。
- (void)viewDidLoad {
[super viewDidLoad];
WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.requiresUserActionForMediaPlayback = NO;
wkWebview = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, 100, 100) configuration:config];
wkWebview.navigationDelegate = self;
[self.view insertSubview:wkWebview atIndex:0];
NSURL *url;
url = [NSURL URLWithString:[[self.content objectAtIndex:0] objectForKey:@"URL"]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[wkWebview loadRequest:request];
button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self
action:@selector(aMethod:)
forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"Show View" forState:UIControlStateNormal];
button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0);
[self.view addSubview:button];
}
这是按钮操作
- (IBAction)aMethod:(id)sender
{
[wkWebview evaluateJavaScript:@"document.getElementsByName('Play')[0].click()" completionHandler:^(id _Nullable sds, NSError * _Nullable error) {
}];
}
答案 0 :(得分:1)
感谢您使用ResponsiveVoice!
Apple阻止您在没有用户启动的情况下在javascript中执行操作。例如,您无法播放音频,重定向页面,或者,在这种情况下,播放TTS。
在Safari中(可能在WebView中也是如此),这只需要完成一次。因此,用户的第一次点击将删除此限制。例如,您可以放置一个"开始"按钮并使用它来播放空白文本("")。这将允许您下次从代码启动TTS。
ResponsiveVoice为您完成此操作,您只需将此函数附加到任何对象的click事件:
long.TryParse()
然后你可以像往常一样打电话给speak()。
希望它有所帮助。