현재 Swift를 사용하여 Mac 용 슬라이드 쇼 응용 프로그램을 만들고 있습니다. 이 응용 프로그램에서는 슬라이드 쇼가 실행 중이고 잠시 동안 마우스가 움직이지 않은 상태에서 마우스를 숨기고 싶습니다. 예를 들어 Quick Time Player에서 수행되는 것과 거의 같습니다.Mac 응용 프로그램에서 마우스를 움직이지 않은 채로 숨기기
이제는 NSCursor.hide()
과 NSCursor.unhide()
및 NSCursor.setHiddenUntilMouseMoves()
을 사용하여 여러 가지 방법을 시도해 보았습니다.
먼저 내 메인 ViewController에서 mouseMoved 함수를 호출하지 못했습니다. 둘째로 NSCursor.setHiddenUntilMouseMoves()
은 내 트랙 패드를 전혀 건드리지 않아도 작동하지 않는 것 같습니다. 슬라이드 쇼에서 이미지를 변경하는 코드 바로 다음에 이미지가 변경되는 것을 볼 수 있지만 디버거를 사용하면 커서가 숨겨져 있지 않을 때 코드 줄에서 멈추지 않습니다.
다른 사람이이 방법을 사용하는 일반적인 방법을 보여줄 수 있습니까? 나는 이것이 할 수있는 이국적인 일이 아니라는 것을 확신하며, 노력하고있는 것보다 훨씬 쉬운 방법이있다.
다음은 내가 무엇을 시도했다입니다 :
import Cocoa
class DiashowViewController: NSViewController {
enum DiashowState {
case playing
case paused
case stopped
}
var files: [URL]?
var diaTimer = Timer()
var diashowState: DiashowState = .stopped
var mouseTimer = Timer()
@IBOutlet weak var diaView: NSImageView!
override func viewDidLoad() {
super.viewDidLoad()
}
override var representedObject: Any? {
didSet {
// Update the view, if already loaded.
}
}
func playDiashow() {
if diashowState == .paused {
diaTimer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(self.changeDia), userInfo: nil, repeats: true)
diashowState = .playing
NSCursor.setHiddenUntilMouseMoves(true)
}
}
func playDiashow(withFiles files: [URL]) {
stopDiashow()
self.files = files
diashowState = .paused
playDiashow()
changeDia()
}
func pauseDiashow() {
if diashowState == .playing {
diaTimer.invalidate()
diashowState = .paused
}
}
override func mouseMoved(with event: NSEvent) {
print("MOUSE MOVED")
}
func stopDiashow() {
pauseDiashow()
diaView.image = nil
files = nil
diashowState = .stopped
}
func changeDia() {
if diashowState == .playing {
let i = Int(arc4random_uniform(UInt32(files!.count)))
let thisDiaURL = files![i]
let thisDia = NSImage(contentsOf: thisDiaURL)
thisDia?.size = NSSize(width: (thisDia?.representations.first?.pixelsWide)!, height: (thisDia?.representations.first?.pixelsHigh)!)
diaView.image = thisDia
NSCursor.setHiddenUntilMouseMoves(true)
print("HIDE MOUSE")
}
}
}
미리 감사!
시도한 코드를 붙여주세요 – Alistra
죄송합니다, 거기에 서있다! –