我在我的界面中播放视频进行装饰。我正在隐藏AV播放器控件,但用户仍然可以控制视频。例如,他们可以使用滑动手势来快进或快退。
这对我来说特别令人惊讶,因为AVPlayerView在它上面有一个叠加视图。
是否有人知道如何阻止所有用户与此视频互动?
答案 0 :(得分:5)
滑动手势通常是三个手指,从我所知道的这些手势对AVPlayerView
的播放行为没有影响; 滚动手势(两个手指)是这里的问题。要取消默认的滚动手势实现,您只需覆盖scrollWheel:
上的AVPlayerView
事件处理程序:
import Cocoa
import AVKit
class PPPlayerView: AVPlayerView {
var prohibitScrolling = true
override func scrollWheel(theEvent: NSEvent) {
if prohibitScrolling {
// just swallow the event
} else {
// request default behaviour
super.scrollWheel(theEvent)
}
}
}
答案 1 :(得分:1)
或者你可以在新文件中使用扩展名,让我们在'AVPlayerViewExtensions.swift'中这样说:
import Cocoa
import AVKit
extension AVPlayerView {
override open func scrollWheel(with event: NSEvent) {
// Disable scrolling that can cause accidental video playback control (seek)
return
}
override open func keyDown(with event: NSEvent) {
// Disable space key (do not pause video playback)
let spaceBarKeyCode = UInt16(49)
if event.keyCode == spaceBarKeyCode {
return
}
}
}
答案 2 :(得分:0)
如果您的视图位于滚动视图(或需要处理鼠标事件的其他视图)中,您可能希望覆盖hitTest:而不是
- (NSView *)hitTest:(NSPoint)aPoint
{
if (prohibitScrolling) {
return nil;
} else {
return [super hitTest:aPoint];
}
}