0
Swift-4를 사용하는 MacOS 앱에 NSTextField가 있습니다.Swift-4 MacOS는 NSTextField에서 마우스 휠 스크롤을 감지합니까?
사용자가 숫자를 입력하기위한 용도입니다. 마우스 휠을 위로 스크롤하거나 스크롤을 기준으로 숫자를 변경하는 방법이 있습니까?
Swift-4를 사용하는 MacOS 앱에 NSTextField가 있습니다.Swift-4 MacOS는 NSTextField에서 마우스 휠 스크롤을 감지합니까?
사용자가 숫자를 입력하기위한 용도입니다. 마우스 휠을 위로 스크롤하거나 스크롤을 기준으로 숫자를 변경하는 방법이 있습니까?
당신은 scrollWheel(with event: NSEvent)
방법을 무시하고 event.deltaY
이 양 또는 음인지 확인하고 텍스트 필드의 값을 증가 또는 감소시킬 수있다 : 당신은 당신이 사용할 수 포커스가있는 필드를 변경하려는 경우
import Cocoa
class ViewController: NSViewController {
@IBOutlet weak var textField: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
textField.stringValue = "0"
}
override func scrollWheel(with event: NSEvent) {
super.scrollWheel(with: event)
if var value = Int(textField.stringValue) {
if event.deltaY > 0 {
value += 1
}
if event.deltaY < 0 {
value -= 1
}
textField.stringValue = String(value)
print(value)
}
}
}
을 보기 창 fieldEditor :
if let text = view.window?.fieldEditor(false, for: nil) {
if var value = Int(text.string) {
if event.deltaY > 0 {
value += 1
}
if event.deltaY < 0 {
value -= 1
}
text.string = String(value)
print(value)
}
}
당신은 당신이 그것의 대리인으로보기 컨트롤러를 설정하고 textf에 대해 그 대리자를 비교해야하는 것과 특정 필드에 스크롤을 제한하려면 ield 개체 :
import Cocoa
class ViewController: NSViewController, NSTextFieldDelegate {
@IBOutlet weak var textField1: NSTextField!
@IBOutlet weak var textField2: NSTextField!
override func viewDidAppear() {
super.viewDidAppear()
textField1.delegate = self
}
override func viewDidLoad() {
super.viewDidLoad()
textField1.stringValue = "0"
textField2.stringValue = "0"
}
override func scrollWheel(with event: NSEvent) {
super.scrollWheel(with: event)
if let textField = (view.window?.firstResponder as? NSTextView)?.delegate, textField === textField1 {
if let text = view.window?.fieldEditor(false, for: nil) {
if var value = Int(text.string) {
if event.deltaY > 0 {
value += 1
}
if event.deltaY < 0 {
value -= 1
}
text.string = String(value)
print(value)
}
}
}
}
}
놀라운 빠르고 유용합니다. 많은 존경! 나는 그것을 시도하고 작동합니다. 문제는 텍스트 필드에 포커스가 있는지 여부에 관계없이 값을 변경한다는 것입니다. 텍스트 필드에 포커스가있을 때만이 효과를 제한 할 수있는 방법이 있습니까? –
위임자를 확인할 수 있습니다. 그것은 까다로울 뿐이지 만 보여 드릴 수 있습니다. –
답변을 둘러 보았습니다.하지만 대부분은 ObjC에 있으며 서브 클래 싱과 관련된 것들에 대해서 이야기합니다. C 세계에는 hasFocus와 iOS와 같은 bool 속성과 같은 것이 있습니다. isFirstResponder 또는 이와 비슷한 것이 있습니다. 그러나 여기서는 꽤 복잡한 것처럼 보입니다. 어떤 도움이라도 최고로 감사 할 것입니다. –