Summary: All I am trying to do is to have a UIControl subclass that shows a UIMenu when pressed and I have read this 100 but I am running into a crash when setting the contextMenuinteractionEnabled property to YES.
Similar question: 100
我有一个UIControl子类,我想要向它添加一个菜单,以便在单击控件时显示UIMenu.但是,在将contextMenuInteractionEnabled属性设置为yes时,我一直收到错误.
下面是控件子类:
@interface MyControl : UIControl
@end
@implementation MyControl
@end
它只是一个普通的UIControl子类.然后,我创建了该类的一个实例,并将contextMenuInteractionEnabled值设置为yes,如下所示:
MyControl *myControl = [[MyControl alloc] init];
myControl.contextMenuInteractionEnabled = YES; //<-- Thread 1: "Invalid parameter not satisfying: interaction"
但随后在运行此程序时,我收到以下错误消息:
错误消息
*-[我的控件添加交互:]中的断言失败,UIview.m:17965
*因未捕获异常‘NSInternalInconsistencyException’终止APP,原因:‘无效参数不满意:交互’
错误:NSInternalInconsistencyException
原因:无效参数不满意:交互
堆栈跟踪: (
0核心基础0x00000001b8181e94 5CDC5D9A-E506-3740-B64E-BB30867B4F1B+40596
1 libobjc.A.dylib 0x00000001b14b78d8 objc_EXCEPTION_SHORT+60
2基础0x00000001b2aa5b4c C431ACB6-FE04-3D28-B677-4DE6E1C7D81F+5528396
3 UIKitCore 0x00000001ba47e5bc 179501B6-0FC2-344A-B969-B4E3961EBE10+1349052
4 UIKitCore 0x00000001ba47ea70 179501B6-0FC2-344A-B969-B4E3961EBE10+1350256
)
Libc++abi:使用类型为NSException的未捕获异常终止
*因未捕获异常‘NSInternalInconsistencyException’终止APP,原因:‘无效参数不满意:交互’ terminating with uncaught exception of type NSException
问题
-
错误消息"INVALID PARAMETER NOT SINSING:Interaction"是什么意思?"互动"从何而来?如何解决?
-
我做错了什么?我想要的只是一个定制的UIControl,它可以在按下时显示菜单.就这样.
另外,这段代码对于UIButton实例来说工作得很好,所以UIButton类在内部做了一些我没有做的事情,但我不知道是什么.
Update 1
根据@DonMag的回答,我try 了一下:
MyControl *control = [[MyControl alloc] init];
control.showsMenuAsPrimaryAction = YES;
UIContextMenuInteraction *contextMenuInteraction = [[UIContextMenuInteraction alloc] initWithDelegate:self];
[control addInteraction:contextMenuInteraction];
[self.view addSubview:control];
它不再崩溃,如果我长时间按它,菜单甚至会显示出来.但我希望它能像常规菜单一样显示出来,作为按下该控件的主要操作.我想要做的是模仿UIButton上的menu
套房产.这将是最理想的事情,如果我可以实现一个具有Menu属性的控件,然后使该菜单作为主要操作可用.