我正在为iPhone App设置UIGestureRecognizer。 我在InterfaceBuilder中将对象库中的Long Press Gesture Recognizer拖到必须接受手势的视图中。
在我以这种方式添加手势识别器之后,它具有指向应该接受手势的视图的引用插座集合。
然后在ViewController中添加一个指向GestureRecognizer的IBOutlet
IBOutlet UILongPressGestureRecognizer *gestRec;
以及手势识别器的相应操作
-(IBAction)longPress:(id)sender;
之后,Gesture Recognizer在界面构建器中显示出口和名为 longPress:的操作,其目标名为 ControlManager
但是当我在iPhoneSimulator中做长按手势时,我的程序崩溃了。当我对我的GestureRecognizer的描述进行NSlog时,它显示以下输出:
<UILongPressGestureRecognizer: 0x6859620;
state = Possible;
view = <UIView 0x6859e20>;
target= <(action=longPress:, target=<ControlManager 0x6859af0>)>>
我认为问题出在最后一行,它应该是这样的:
target=<ControlManager 0x6859af0>;
action=longPress:
我做错了吗?
答案 0 :(得分:1)
你在.m中实现了 - (void)longPress:(UIGestureRecognizer)识别器吗? (我建议更新id - &gt; UIGestureRecognizer和发件人 - &gt;识别器; IBAction的typedef为void但你可能会将其显式化)
您肯定希望实现选择器,当方法(如果实现的话)与选择器不匹配时,这种类型的崩溃非常常见。即使错过结肠也可能导致不匹配。
另外,您是否设置了调试器以在引发异常时中断?如果没有,请转到调试器(左侧窗格左侧第6个“选项卡”),单击+添加新的“添加异常断点”,并保留默认值)。一旦引发异常,这将使您进入调试器,这通常是堆栈中的有用位置。
祝你好运,达明