- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Swift 2 中通过以下方式在我的项目中实现了快速查看(我将其包含在此处以供引用,因为它可能会帮助其他人进行设置)。
我的 NSViewController 包含一个 NSTableView 子类,我在其中实现了 keyDown
来监听按下的空格键(可能不是最好的方法,但它有效):
override func keyDown(theEvent: NSEvent) {
let s = theEvent.charactersIgnoringModifiers!
let s1 = s.unicodeScalars
let s2 = s1[s1.startIndex].value
let s3 = Int(s2)
if s3 == Int(" ".utf16.first!) {
NSNotificationCenter.defaultCenter().postNotification(NSNotification(name: "MyTableViewSpacebar", object: nil))
return
}
super.keyDown(theEvent)
}
在我的 View Controller 中,我有一个用于此通知的观察者以及 QLPreviewPanel
所需的功能:
//...
class ViewController: NSViewController {
@IBOutlet weak var myTableView: MyTableView!
var files = [FilesListData]() //array of custom class
//...
override func viewDidLoad() {
//...
NSNotificationCenter.defaultCenter().addObserver(self, selector: "spaceBarKeyDown:", name: "MyTableViewSpacebar", object: nil)
}
func spaceBarKeyDown(notification: NSNotification) {
if let panel = QLPreviewPanel.sharedPreviewPanel() {
panel.makeKeyAndOrderFront(self)
}
}
override func acceptsPreviewPanelControl(panel: QLPreviewPanel!) -> Bool {
return true
}
override func beginPreviewPanelControl(panel: QLPreviewPanel!) {
panel.delegate = self
panel.dataSource = self
}
override func endPreviewPanelControl(panel: QLPreviewPanel!) {
}
}
extension ViewController: QLPreviewPanelDataSource {
func numberOfPreviewItemsInPreviewPanel(panel: QLPreviewPanel!) -> Int {
return self.myTableView.selectedRowIndexes.count
}
func previewPanel(panel: QLPreviewPanel!, previewItemAtIndex index: Int) -> QLPreviewItem! {
if self.myTableView.selectedRow != -1 {
var items = [QLPreviewItem]()
let manager = NSFileManager.defaultManager()
for i in self.myTableView.selectedRowIndexes {
let path = self.files[i].path //path to a MP3 file
if manager.fileExistsAtPath(path) {
items.append(NSURL(fileURLWithPath: path))
} else {
items.append(qm_url) //image of a question mark used as placeholder
}
}
return items[index]
} else {
return qm_url //image of a question mark used as placeholder
}
}
}
我现在想做的是在快速查看面板打开时监听按下的“向上箭头”和“向下箭头”键,以便更改在NSTableView
,与快速查看文件时 Finder 的行为非常相似。我不知道如何实现这一点。有什么想法吗?
谢谢。
最佳答案
终于找到了我要找的东西,而且其实很简单。
由于我的主视图 Controller 也是 QLPreviewPanel 的委托(delegate),因此我添加了以下内容:
extension ViewController: QLPreviewPanelDelegate {
func previewPanel(panel: QLPreviewPanel!, handleEvent event: NSEvent!) -> Bool {
let kc = event.keyCode
if (kc == 126 || kc == 125) { //up and down arrows
if event.type == NSEventType.KeyDown {
self.myTableView.keyDown(event) //send the event to the table
} else if event.type == NSEventType.KeyUp {
self.myTableView.keyUp(event)
}
return true
}
return false
}
}
然后在我的 TableView 委托(delegate)中:
func tableViewSelectionDidChange(notification: NSNotification) {
guard myTableView.numberOfSelectedRows > 0 else {
if let panel = QLPreviewPanel.sharedPreviewPanel() {
if panel.visible {
panel.close()
}
}
return
}
if let panel = QLPreviewPanel.sharedPreviewPanel() {
if panel.visible {
panel.reloadData()
}
}
}
就是这样! QLPreviewPanelDataSource
处理其余部分。
关于Cocoa:对 QLPreviewPanel 中的 keyDown 使用react,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33808935/
我想使用 QLPreviewPanel 预览一些文件。 我使用 Storyboard 包含了以下 ViewController class ViewController: NSViewControll
我在 Swift 2 中通过以下方式在我的项目中实现了快速查看(我将其包含在此处以供引用,因为它可能会帮助其他人进行设置)。 我的 NSViewController 包含一个 NSTableView
当人们试图将 Quick Look 预览面板和安全范围的 URL 组合在一起时,会出现 Cocoa 中选择不当、不可组合的抽象问题。 我有一个具体的例子: 想象一下,我们正在尝试显示 MediaLib
我想在 QLPreviewPanel 中显示 TableView 中的 url,但出现此错误: [QL] QLError(): -[QLPreviewPanel reloadData] called
我想制作一个可以像聚光灯搜索实现一样显示为弹出窗口的弹出窗口?我只能使用传统的方式在中心显示一个 Quicklook 窗口,但我想做这样的事情: 我该怎么做?谢谢。 最佳答案 这可以通过创建 QLPr
试图找出如何在 iOS 和 macOS 上的 SwiftUI 中使用 QuickLook。我怀疑在遥远的将来,会有一些统一的 SwiftUI QL API,但目前还看不到,所以让我们利用现有的东西吧…
我想制作一个可以像聚光灯搜索实现一样显示为弹出窗口的弹出窗口?我只能使用传统的方式在中心显示一个 Quicklook 窗口,但我想做这样的事情: 我该怎么做?谢谢。 最佳答案 这可以通过创建 QLPr
试图找出如何在 iOS 和 macOS 上的 SwiftUI 中使用 QuickLook。我怀疑在遥远的将来,会有一些统一的 SwiftUI QL API,但目前还看不到,所以让我们利用现有的东西吧…
我们正在考虑将我们的 Objc 应用程序迁移到 Electron 应用程序,因为原生应用程序已经只是一个网站周围的 WebWrapper。 我们缺少一项重要功能:使用 QuickLook 预览文件的能
我是一名优秀的程序员,十分优秀!