所以我对 Objective-C 比较陌生,而且很可能我错过了一些相当明显的东西,所以如果是这样,请随意向我扔西红柿。这是我的问题:
我有一个 iPhone 单视图应用程序,其中包含一个MapView
. 我在其上添加了一个长按手势识别器,MapView
以便注释/放置一个图钉。如果我不指定minimumPressDuration
...
- (void)viewWillAppear:(BOOL)animated {
UILongPressGestureRecognizer * longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
[mapView addGestureRecognizer:longPressRecognizer]; // Actual map view handler is added to
...
}
-(void) handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer {
NSLog (@"Did it work?!");
// Some code here to make pins appear; omitted for simplicity in this question
}
正如预期的那样,当我长按地图时,0.5
几秒钟后(默认时间)我将在地图上有 1 个图钉。如果我在我的手指周围移动,我会有一堆别针。日志还打印出“它有效吗?!” 一遍又一遍。再次,预期。但是,当我在 viewWillappear 方法中添加一小行时(就在消息 mapView 之前addGestureRecognizer
):
longPressRecognizer.minimumPressDuration = 1.0;
...手势不再起作用。在那我按住 1 秒钟,日志上什么也没有出现。放手,尝试超过一秒钟......什么都没有。没有引脚被丢弃,并且没有任何内容打印到日志中。为什么会出现这种情况?我不明白为什么设置最短持续时间会破坏这一点。我的期望是这应该和以前一样 - 没有自定义设置的最小按下持续时间 - 唯一的区别是我需要按住 1 整秒而不是半秒。
更新:看来,如果我选择介于0.1
和0.5
包容之间的值,它会起作用。但是一旦我达到0.6
或更高,它就不起作用了。我不知道的 Obj-C 引擎盖下发生了什么?
另外,我知道我应该在我的处理函数中检查状态,所以除非这能解决这个问题,否则不要为它堆砌我。在深入研究细节之前,我只想让基本的工作先工作。
谢谢!
PS,使用 OS X 10.8.2 和 Xcode 4.5.1 (4G1004)。