首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止用户与AVPlayerView交互?

防止用户与AVPlayerView交互?
EN

Stack Overflow用户
提问于 2016-03-10 02:28:06
回答 3查看 1.4K关注 0票数 6

我正在我的UI中播放一个装饰视频。我隐藏的AV播放器控制,但它仍然可以让用户控制视频。例如,他们可以使用滑动手势快速前进或倒带。

这对我来说特别令人惊讶,因为AVPlayerView在上面有一个覆盖视图。

有人知道如何防止所有用户与此视频互动吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-03-10 09:51:39

滑动手势通常是三个手指,据我所知,这些对AVPlayerView的播放行为没有影响;滚动手势(两个手指)是这里的问题。要取消默认的滚动手势实现,只需在scrollWheel:上覆盖AVPlayerView事件处理程序即可。

代码语言:javascript
复制
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) 
        }
    }
}
票数 5
EN

Stack Overflow用户

发布于 2016-06-26 12:04:19

如果将视图放置在滚动视图(或需要处理鼠标事件的另一个视图)中,则可能需要重写hitTest:而不是

代码语言:javascript
复制
- (NSView *)hitTest:(NSPoint)aPoint
{
   if (prohibitScrolling) {
      return nil;
   } else {
      return [super hitTest:aPoint];
   }
}
票数 1
EN

Stack Overflow用户

发布于 2017-07-11 10:39:14

或者您可以在一个新文件中使用扩展名来完成这个任务,比如在“AVPlayerViewExtensions.swift”中,如下所示:

代码语言:javascript
复制
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
        }
    }

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35906503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档