2014-09-05 181 views
1

隐式转换我想不出什么我做错了这里的Xcode会抱怨有价值转换问题:从枚举类型“枚举NSEventMask”

Value Conversion Issue 
    Implicit conversion from enumeration type 'enum NSEventMask' to different enumeration type 'NSEventModifierFlags' (aka 'enum NSEventModifierFlags') 

这是NSLeftMouseDownMask标志,Xcode是不满。

NSEvent *event = [NSEvent mouseEventWithType:NSLeftMouseDown 
            location:menuOrigin 
           modifierFlags:(NSLeftMouseDownMask) // 0x100 
            timestamp:0 
           windowNumber:[[(NSButton *)sender window] windowNumber] 
             context:[[(NSButton *)sender window] graphicsContext] 
            eventNumber:0 
            clickCount:1 
            pressure:1]; 
+0

我想你应该使用这些常量:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSEvent_Class/Reference/Reference.html#//apple_ref/doc/uid/20000016-SW14而不是'NSLeftMouseDownMask'。 – Larme 2014-09-05 22:46:43

+0

该链接指向一个包含“NSLeftMouseDownMask”的页面,其中可能包含更多特定的内容。 – 2014-09-06 03:18:39

+0

对不起,链接适合我。它应该引导你进入修改器标志常量(看左边的菜单找到它) – Larme 2014-09-06 08:18:06

回答

1

是的,正如Larme建议,请使用

NSDeviceIndependentModifierFlagsMask 

更换 NSLeftMouseDownMask

NSDeviceIndependentModifierFlagsMask: 用于仅检索与设备无关的修饰符标志,允许应用程序屏蔽掉了设备相关修饰符标志,包括事件合并信息。