【发布时间】:2012-03-18 03:29:10
【问题描述】:
我正在为 iPhone 应用程序设置 UIGestureRecognizer。 我在 InterfaceBuilder 中通过将 Long Press Gesture Recognizer 从 Objects 库拖到必须接受手势的视图来完成。
在我以这种方式添加手势识别器后,它具有指向应接受手势的视图的引用插座集合。
然后在 ViewController 中添加一个指向 GestureRecognizer 的 IBOutlet
IBOutlet UILongPressGestureRecognizer *gestRec;
手势识别器的相应操作
-(IBAction)longPress:(id)sender;
因此,手势识别器在界面生成器中显示出口和名为 longPress: 的操作,目标名为 ControlManager
但是当我在 iPhoneSimulator 中进行长按手势时,我的程序崩溃了。当我对 GestureRecognizer 的描述进行 NSlog 记录时,它会显示以下输出:
<UILongPressGestureRecognizer: 0x6859620;
state = Possible;
view = <UIView 0x6859e20>;
target= <(action=longPress:, target=<ControlManager 0x6859af0>)>>
我认为问题在最后一行,应该是这样的:
target=<ControlManager 0x6859af0>;
action=longPress:
我做错了吗?
【问题讨论】:
-
您在 ControlManager 中实施 longPress: 吗?你能发布崩溃日志吗?
-
是的,我愿意。崩溃日志如下: -[__NSCFString longPress:]: unrecognized selector sent to instance 0x686a8d0
-
也许你在代码中添加了另一个目标,一个字符串。这将解释错误消息和崩溃。手势识别器描述看起来不错。请注意,手势识别器可以有多个目标/动作。
-
我通过删除所有视图和视图控制器并留下一个视图和一个控制器使其正常工作。所以现在我只需要找出崩溃时特定视图和视图控制器出了什么问题。
标签: ios interface-builder target gesture long-press