ios - 长按 UIButton 上的手势识别器?

标签 ios objective-c uibutton long-press

我正在开发扫雷游戏,我想在用户长按游戏板上的某个图 block 时添加标志。 我已经实现了这段代码:

对于游戏板上的每个按钮:

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressTap:)];
            longPress.minimumPressDuration = 1.0f;
            [self.button addGestureRecognizer:longPress];

在自身中,方法longPressTap:

- (void)longPressTap:(Tile *)sender {
        if (sender.block.marking ==  MARKING_FLAGGED) {
            // if already a flag I mark as a blank tile, with color defined for gameboard
            sender.backgroundColor = UIColorFromRGB(0x067AB5);
            sender.block.marking = MARKING_BLANK;
            self.flagCount++;
        }
        else{
            // if it's not a flag I mark as a flag and set the flag image for the tile
            [sender setBackgroundImage:[UIImage imageNamed:IMAGE_NAME_FLAG] forState:UIControlStateNormal];
            sender.block.marking = MARKING_FLAGGED;
            self.flagCount--;
        }
}

当然,self 是我的 UIGestureRecognizerDelegate。 但是,当我尝试长按磁贴时,应用程序崩溃并出现此错误:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UILongPressGestureRecognizer block]: unrecognized selector sent to instance 0x8cf2b00'

我该怎么办?我刚开始使用 Obj-C 编程,所以如果有人能帮助我并解释我做错了什么,我将不胜感激。

最佳答案

- (void)showOptions:(UILongPressGestureRecognizer*)sender{

UIButton *btn = (UIButton*)sender.view;
NSLog(@"view tag %d",sender.view.tag);

if (sender.state == UIGestureRecognizerStateEnded)
{

}
else if (sender.state == UIGestureRecognizerStateBegan)
{
   [self.bubbleDelegate showOptionsForMessage:btn];
}

关于ios - 长按 UIButton 上的手势识别器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24280978/

相关文章:

ios - 分段控制/文本字段/DidChange

ios - didSelectRowAtIndexPath 被调用但不 prepareForSegue

ios - UIImage 未在按钮 IBAction 上的 setImage 上更新

iphone - UIButton 放置在 tableviewcell 顶部

ios - 'RTCPeerConnection' 没有可见的@interface 声明选择器 'setLocalDescription:'

objective-c - 将 NSString 截断为宽度

ios - MKOverlayView 和改变它的 alpha

iphone - NSFetchedResultsController 和 NSOperation

objective-c - Xcode 调试不显示值

ios - 从数组循环时将标签分配给 UIButton