gpt4 book ai didi

objective-c - 如何在按下空格键时禁用 Web FrameView 页面向下滚动?

转载 作者:行者123 更新时间:2023-12-03 17:39:29 24 4
gpt4 key购买 nike

我正在构建一个在 WebView 中具有实时预览功能的 HTML 编辑器(objective-C、Mac OS X)。到目前为止一切顺利,几乎获得了我需要的所有功能:两个 View (NSTextView 和 WebView)同步滚动,预览完美呈现。我的一个问题是 WebView 对空格键的默认 react :向下滚动。我花了很多时间挖掘 WebKit 源代码,试图禁用它,但没有成功。我试图子类化 WebView 并在那里捕获 keyDown,为 WebFrameView 调配 keyDown,拒绝firstRsponder 状态......但运气不佳。我在这里缺少什么?任何关于如何摆脱这种行为的想法将不胜感激。

最佳答案

这里也一样。作为实验,我使用 NSEvent.addLocalMonitorForEventsMatchingMask 拦截所有关键事件,将每个空格映射到下划线:我在 NSTextView 中得到下划线而不是空格,但 WebView 一直向下滚动。我猜 WebView 正在不同级别拦截键盘事件。

但是,我注意到,只有当应用程序在处理(或多或少同时)用户输入时更新 WebView 内容时,才会出现向下滚动问题。

因此,我插入了一个延迟 - 仅在用户不活动一定时间间隔后更新 WebView 内容 - 例如:

private var _refreshAskCount = 0
func refreshWebViewIfIdontAskYouAgainInTheNext(#seconds: Double) {
let count = ++self._refreshAskCount
let delay = dispatch_time(DISPATCH_TIME_NOW, Int64(seconds * Double(NSEC_PER_SEC)))
dispatch_after(delay, dispatch_get_main_queue()) {
if count == self._refreshAskCount {
self.renderWebView()
}
}
}

这似乎解决了这个问题,或者至少大大减少了它。

关于objective-c - 如何在按下空格键时禁用 Web FrameView 页面向下滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com