几乎总是,当MyVIEw收到鼠标按下事件时,所有后续鼠标拖动的事件都会被同一个MyVIEw接收,直到下一个鼠标按下事件.即使光标超出了MyVIEw.这是预期的行为.
有时,MyVIEw将接收鼠标按下事件,但只有当光标保留在MyVIEw内时才会接收鼠标拖动和鼠标按下事件.如果光标移动到另一个MyVIEw,则MyVIEw开始接收鼠标拖动事件(没有先接收鼠标按下事件)并且可以接收后续的鼠标按下事件.
如果它很重要,鼠标按下事件会在MyVIEw的顶部创建一个FooVIEw(NSVIEw的子类),鼠标拖动的事件会调整FooVIEw的框架大小.这可能是相关的,因为我只能在创建其中一个FooVIEw后重现问题. FooVIEw没有实现任何鼠标事件方法.
我一直在搞乱这一段时间,并且无法在一个简单的例子中故意重现问题或重新创建问题.我很乐意回答有关我的代码的任何问题,我只是不确定发布的相关部分是什么.
解决方法 不确定根本问题是什么(这个 Cocoa行为似乎与我不一致)……但这里有一个可能的解决方法:>在supervIEw中,创建一个实例变量,跟踪发生-mouseDown:的MyVIEw实例.
>当您在MyVIEw中收到-mouseDragged:而不是在self上 *** 作时, *** 作存储在supervIEw中的MyVIEw实例引用.
…然后,您将能够始终跟踪正在拖动的对象,而无需运行自己的事件循环.
总结以上是内存溢出为你收集整理的objective-c – mouseDragged事件被另一个视图窃取全部内容,希望文章能够帮你解决objective-c – mouseDragged事件被另一个视图窃取所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)