xcode – 拖放功能swift OSX

xcode – 拖放功能swift OSX,第1张

概述这有点复杂,但我希望有人可以帮助我. 我正在尝试为我的OSX应用程序构建拖放功能. 这就是目前的情况. 因此,只有一个文本字段,用户可以在视图中拖放.只有一个文本字段就足够简单,但是如果有几个文本字段,那就变得复杂了,我不知道如何处理. 这就是我目前拥有的: @IBOutlet weak var test: NSTextField!@IBAction override func mouseDr 这有点复杂,但我希望有人可以帮助我.
我正在尝试为我的OSX应用程序构建拖放功能.

这就是目前的情况.
因此,只有一个文本字段,用户可以在视图中拖放.只有一个文本字段就足够简单,但是如果有几个文本字段,那就变得复杂了,我不知道如何处理.
这就是我目前拥有的:

@IBOutlet weak var test: NSTextFIEld!@IBAction overrIDe func mouseDragged(theEvent: NSEvent) {    NSCursor.closedHandCursor().set()    var event_location = theEvent.locationInWindow    test.frame.origin.x = event_location.x - 192    test.frame.origin.y = event_location.y}

Test是我的NSTextFIEld的名称.我知道它的名字所以它很容易移动它.但是如果用户添加了更多的文本字段(参见左侧窗格),那么我不知道如何处理这个文本字段,因为我没有它的名字(如第一个输入的“test”).

我通过以下代码添加文本字段:

let input = NSTextFIEld(frame: CGRectMake(wIDth,height,100,22))    self.MainVIEw.addSubvIEw(input)

如何确定选择了哪个文本字段(如果视图中有多个文本字段),然后通过拖放移动相应的文本字段?

拖放适用于单个静态文本字段

解决方法 我准备了一个示例应用程序,请考虑以下事项:

https://github.com/melifaro-/DraggableNSTextFieldSample

我们的想法是引入继承NSTextFIEld的SelectableTextFIEld. SelectableTextFIEld提供了在文本字段选择事件上订阅感兴趣的听众的工具.它有dIDSelectCallback块变量,您需要设置处理代码.像这样的东西:

textFIEld.dIDSelectCallback = { (textFIEld) in    //this peace of code will be performed once mouse down event    //was detected on the text fIEld    self.currentTextFIEld = textFIEld}

通过使用提到的回调机制,一旦选择了文本字段,我们就可以将它存储在currentTextFIEld变量中.因此,当调用VIEwController的mouseDragged函数时,我们知道currentTextFIEld,我们可以适当地处理它.在示例应用程序的情况下,我们需要根据拖动事件转换调整currentTextFIEld原点.希望现在变得更好.

附:打开NSTextFIEld以继承它,因此您可以在使用NSTextFIEld的任何地方自由使用我们的SelectableTextFIEld,包括Interface Builder.

编辑

我检查了你的样品.不幸的是,我无法向您的存储库提交/创建拉取请求,因此请在此处找到我的建议:

overrIDe func vIEwDIDLoad() {    super.vIEwDIDLoad()    dIDbuttonSelectCallback = { (button) in        if let currentbutton = self.currentbutton {            currentbutton.highlighted = !currentbutton.highlighted            if currentbutton == button {                self.currentbutton = nil            } else {                self.currentbutton = button            }        } else {            self.currentbutton = button        }        button.highlighted = !button.highlighted    }    addbuttonAtRandomePlace()    addbuttonAtRandomePlace()    dIDbuttonSelectCallback(button: addbuttonAtRandomePlace())}overrIDe func mouseDragged(theEvent: NSEvent) {    guard let button = currentbutton else {        return    }    NSCursor.closedHandCursor().set()    button.frame.origin.x += theEvent.deltaX    button.frame.origin.y -= theEvent.deltaY}private func addbuttonAtRandomePlace() -> Selectablebutton {    let vIEwWIDth = self.vIEw.bounds.size.wIDth    let vIEwHeight = self.vIEw.bounds.size.height    let x = CGfloat(rand() % Int32((vIEwWIDth - buttonWIDth)))    let y = CGfloat(rand() % Int32((vIEwHeight - buttonHeight)))    let button = Selectablebutton(frame: CGRectMake(x,y,buttonWIDth,buttonHeight))    button.setbuttonType(NSbuttonType.Togglebutton)    button.alignment = NSCenterTextAlignment    button.bezelStyle = NSBezelStyle.RoundedBezelStyle    button.dIDSelectCallback = dIDbuttonSelectCallback    self.vIEw.addSubvIEw(button)    return button}
总结

以上是内存溢出为你收集整理的xcode – 拖放功能swift OSX全部内容,希望文章能够帮你解决xcode – 拖放功能swift OSX所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1020317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存