我正在WebView中構建一個帶有實時預覽(objective-C,Mac OS X)的HTML編輯器。到目前爲止這麼好,幾乎獲得了我需要的所有功能:兩個視圖(NSTextView和WebView)同步滾動,預覽呈現完美。我的一個問題是WebView對空格鍵的默認反應:向下滾動。我花了很多時間在WebKit資源中挖掘,試圖在沒有成功的情況下禁用它。我試圖對WebView進行子類化,並在那裏捕獲keyDown,爲WebFrameView調用keyDown,拒絕firstRsponder狀態......沒有太多運氣。我在這裏錯過了什麼?任何想法如何擺脫這種行爲,將不勝感激。如何禁用WebFrameView頁面當空格鍵被按下時,滾動頁面?
0
A
回答
2
同樣在這裏。作爲一個實驗,我使用NSEvent.addLocalMonitorForEventsMatchingMask
攔截了所有關鍵事件,將每個空間映射爲下劃線:我在NSTextView中獲得了下劃線而不是空格,但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()
}
}
}
這似乎解決這個問題,或者至少大大地減少它。
相關問題
- 1. jQuery的頁面滾動向下每當按鍵下單頁面
- 2. 當JQuery按鈕被聚焦並按下空格鍵時,如何防止頁面滾動
- 3. 如何僅在空格鍵被按下時禁止滾動?
- 4. 當某些元素被佔用時禁用頁面滾動
- 5. (Wordpress)如何在按空格鍵時禁用向下滾動?
- 6. 當頁面元素被刪除時阻止頁面滾動
- 7. 如何禁用頁面的滾動條?
- 8. Drupal:僅當頁面向下滾動時才加載頁面
- 9. 在空格鍵在Firefox上按下時禁用向下滾動
- 10. 如何在頁面滾動時使H1下移頁面?
- 11. Angular - 如何在頁面按鈕被按下後更新頁面?
- 12. 如何使用箭頭鍵禁用FF中的頁面滾動
- 13. 當按箭頭鍵時滾動頁面內容
- 14. 當div被滾動到底部時停止滾動頁面
- 15. 當頁面滾動時頁腳不粘在頁面底部
- 16. 需要禁用頁面移動的HTML頁面上滾動?
- 17. 當滾動頁面時隱藏jquery移動彈出頁面
- 18. Jquery:從當前頁面向下滾動頁面100px
- 19. 攔截空格和箭頭等按鍵時滾動停止頁面
- 20. 禁用RadComboBox的下拉滾動頁面滾動
- 21. 如何讓html頁面檢測輸入按鍵被按下?
- 22. 當鼠標懸停控制時禁用頁面滾動?
- 23. 當用戶滾動頁面到頁面底部時,頁腳向上滑動
- 24. 如何禁用頁面滾動而滾動的div
- 25. 禁用並啓用頁面滾動(Swift)
- 26. 如何在按下按鍵時使用JavaScript加載新頁面?
- 27. 頁面滾動時,軟鍵盤彈出
- 28. 滾動頁面的按鈕
- 29. 在網格佈局當鍵盤在xamarin.forms中打開時如何滾動頁面?
- 30. 禁用頁面滾動直到頁面加載 - jQuery
您是否嘗試過繼承'NSScrollView'並捕獲空間? – Volker
捕捉空間鍵時沒有問題,當WebView具有焦點時,但在我的情況下,焦點在NSTextView上,而WebView從...中獲取事件?子類化NSScrollView不能幫助。如何阻止NSTextView將響應事件傳遞給響應者鏈(但仍有空間鍵工作)? –