2016-10-05 19 views
6

Tôi đã thêm một cách theo chương trình AVPlayerViewController vào UIViewController. Tôi có thể nhận được thông báo khi người chơi chơi xong (playerDidFinishPlaying). Tôi cũng muốn biết liệu người dùng đã chạm vào màn hình trong khi video đang phát và tôi chưa tìm thấy bất kỳ thông báo liên quan nào.Nhanh chóng, cách phát hiện cảm ứng khi phát video trong AVPlayerViewController

+0

Cách phát hiện cảm ứng khi người dùng nhấn nút chuyển tiếp/lùi? – pkc456

Trả lời

6

Giải pháp là để tạo ra một cơ sở lớp AVPlayerViewController và ghi đè touches​Began(_:​with:​) phương pháp:

Swift 2:

Tuỳ chỉnh Base Class:

class CustomAVPlayerViewController: AVPlayerViewController { 
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 
     print("touchesBegan") 
    } 
} 

ViewController:

let videoURL = NSURL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4") 
let player = AVPlayer(URL: videoURL!) 
let playerViewController = CustomAVPlayerViewController() 
playerViewController.player = player 
self.presentViewController(playerViewController, animated: true) { 
    playerViewController.player!.play() 
} 

Swift 3:

Tuỳ chỉnh Base Class:

class CustomAVPlayerViewController: AVPlayerViewController { 
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
     print("touchesBegan") 
    } 
} 

View Controller:

let videoURL = URL(string: "https://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4") 
let player = AVPlayer(url: videoURL!) 
let playerViewController = CustomAVPlayerViewController() 
playerViewController.player = player 
self.present(playerViewController, animated: true) { 
    playerViewController.player!.play() 
} 

Đừng quên import AVKitimport AVFoundation.

Mỗi lần bạn nhấn vào playerViewController, "touchesBegan" sẽ được in.

+2

Bất kỳ suy nghĩ nào về tài liệu tham khảo: _Không phải phân lớp AVPlayerViewController. Việc ghi đè các phương thức của lớp này không được hỗ trợ và dẫn đến hành vi không xác định_. – Bruce

+1

Đề cập đến bình luận của @ Bruce ([Tài liệu của Apple] (https://developer.apple.com/reference/avkit/avplayerviewcontroller)): _touchesBegan_ là một [UIResponder] (https://developer.apple.com/reference/uikit/uiresponder) phương pháp (UIResponder-> UIViewController-> AVPlayerViewController). Trong trường hợp của chúng tôi, UIResponder nên chú ý đến các sự kiện cảm ứng, nó không liên quan đến chức năng cốt lõi của phương thức AVPlayerViewController ghi đè phương thức này không phản ánh cách AVPlayerViewController xử lý làm việc với một ví dụ-video như thế nào. ghi đè. cảm ơn ghi chú. –

+0

@AhmadF, Cách phát hiện cảm ứng khi người dùng nhấn nút chuyển tiếp/lùi? – pkc456

Các vấn đề liên quan