0

按下空格键时,pdfkit 视图的标准行为似乎是切换页面。我们想将空格按钮用于其他事件(在我们的例子中播放音频)。

将空间设置为菜单中的快捷方式仅在与 pdfkit 视图交互之前有效。之后,行为始终设置为切换页面。

我们还尝试使用以下代码拦截空格键按下事件:

if (!keyDownEventMonitor) {
    __weak IBBookViewController *weakSelf = self;
    NSEvent * (^monitorHandler)(NSEvent *);
    monitorHandler = ^NSEvent * (NSEvent * theEvent){

        BOOL handleEvent = weakSelf.view.window != nil 
                            && theEvent.type == NSKeyDown
                            && !theEvent.isARepeat;

        if (handleEvent) {
            switch ([theEvent keyCode]) {
                case 49:
                    [self audioPlayPauseBtnHit:nil];
                    break;
                default:
                    break;
            }
        }
        return theEvent;
    };
    keyDownEventMonitor = [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask handler:monitorHandler];
}

但它只是扩展了空间功能,因此既可以播放音频,也可以切换页面。

有任何想法吗?

4

1 回答 1

0

你有其他方向可以去这里。

子类化以覆盖行为。(请记住,该行为可能继承自超类或类的一部分,该类是 pdfview 类的标头中的私有 ivar。)

查看响应者链以及哪个对象真正首先获得了 keyDown 消息。拦截和转发,可能暂时改变关键视图。

创建一个封面视图来处理您首先关心的 keyDown 事件并将其他事件转发到响应者链。

于 2013-09-18T08:52:07.723 回答