我正在我的UI中播放一个装饰视频。我隐藏的AV播放器控制,但它仍然可以让用户控制视频。例如,他们可以使用滑动手势快速前进或倒带。
这对我来说特别令人惊讶,因为AVPlayerView在上面有一个覆盖视图。
有人知道如何防止所有用户与此视频互动吗?
发布于 2016-03-10 09:51:39
滑动手势通常是三个手指,据我所知,这些对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)
}
}
}发布于 2016-06-26 12:04:19
如果将视图放置在滚动视图(或需要处理鼠标事件的另一个视图)中,则可能需要重写hitTest:而不是
- (NSView *)hitTest:(NSPoint)aPoint
{
if (prohibitScrolling) {
return nil;
} else {
return [super hitTest:aPoint];
}
}发布于 2017-07-11 10:39:14
或者您可以在一个新文件中使用扩展名来完成这个任务,比如在“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
}
}
}https://stackoverflow.com/questions/35906503
复制相似问题