Ich habe erfolgreich ein WKWebView
programmgesteuertes In a viewController
(in viewDidLoad()
) hinzugefügt . Wenn ich eine URL lade, die ein Video enthält, sieht es gut aus, aber wenn ich versuche, darauf zu tippen (es abzuspielen), kann ich es nicht sehen, aber das Audio funktioniert gut.
Das Seltsame ist, dass ich ein neues Projekt erstellt habe, um sicherzustellen, dass es einwandfrei funktioniert. Außerdem habe ich genau den Code kopiert, mit dem webView das Video angezeigt hat.
Es hat gut funktioniert, bevor es zu Swift 3 konvertiert wurde.
So sieht es aus, wenn Sie auf das Video tippen:
Vor dem Tippen:
Nach dem Tippen:
Ich habe auch eine andere Webseite ausprobiert:
Vor dem Tippen:
Nach dem Tippen (Beachten Sie, dass die Statusleiste jetzt ausgeblendet ist):
Dies ist einfach der Code:
override func viewDidLoad() {
super.viewDidLoad()
let web = WKWebView(frame: view.frame)
let urlRequest = URLRequest(url: URL(string: "http://www.w3schools.com/html/html5_video.asp")!)
web.frame = view.frame
web.load(urlRequest)
view.addSubview(web)
}
Ich habe versucht, viele Fälle ohne Ausgabe zu überprüfen. Was vermisse ich?
Danke im Voraus.
Ich denke, das Video wird hinter Ihrem WKWebview abgespielt. Könnten Sie bitte die Ansichtshierarchie debuggen und veröffentlichen? Xcode->Menu->Debug->View Debugging->Capture View Hierarchy
beim Abspielen des Videos.
Ich habe es mit einem neuen swift3-Projekt versucht und mit Ihrem Code gibt es kein Problem, hier ist die Ansichtshierarchie:
Sie können sehen, dass sich AVPlayerView im linken Bereich in einem anderen UIWindow befindet, das sich von WKWebView unterscheidet. Ich denke, das UIWindow, das das WKWebView in Ihrem Projekt enthält, hat eine höhere Fensterebene, sodass es über dem UIWindow angezeigt wird, das AVPlayer enthält.
Und indem ich das Standard-UIWindow zu einem höheren WindowLevel (UIWindowLevelAlert) gemacht habe, habe ich reproduziert, was Sie in Ihrem Projekt gesehen haben.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
window?.windowLevel = UIWindowLevelAlert
return true
}
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen