jls*_*ker 5 cocoa objective-c nsview nsresponder
我对另一个类MyView(的子类)有几种看法。实现、、、和。NSViewNSViewMyView-mouseEntered:-mouseExited:-mouseDown:-mouseDragged:-mouseUp:
几乎总是,当 aMyView接收到鼠标按下事件时,所有后续的鼠标拖动事件都会由该事件接收,MyView直到下一个鼠标释放事件。即使光标超出了MyView. 这是预期的行为。
有时, aMyView会收到鼠标按下事件,但只会在光标保留在MyView. 如果光标移动到不同的MyView,则MyView开始接收鼠标拖动事件(无需首先接收鼠标按下事件),并且可以接收后续的鼠标按下事件。
如果重要的话,鼠标按下事件会在 之上创建一个FooView( 的子类) ,并且鼠标拖动事件会调整 的框架大小。这可能是相关的,因为我只能在创建其中之一后才能重现该问题。不实现任何鼠标事件方法。NSViewMyViewFooViewFooViewFooView
我已经搞乱这个问题有一段时间了,但无法故意重现该问题或在一个简单的示例中重新创建该问题。我很乐意回答有关我的代码的任何问题,我只是不确定要发布的相关部分是什么。
不确定根本问题是什么(这种 Cocoa 行为对我来说似乎不一致)...但这里有一个可能的解决方法:
MyView实例-mouseDown:。-mouseDragged:in时MyView,不是对 进行操作self,而是对MyView存储在超级视图中的实例引用进行操作。...然后您将能够持续跟踪正在拖动的对象,而无需运行自己的事件循环。
| 归档时间: |
|
| 查看次数: |
2784 次 |
| 最近记录: |