【问题标题】:GestureRecognizer Blocks with BlockKit Xcode Build Error带有 BlockKit Xcode 构建错误的 GestureRecognizer 块
【发布时间】:2012-09-30 00:19:01
【问题描述】:

我遇到了 GestureRecognizer 和 BlocksKit 的问题,这给了我一个构建错误。

基本上,我想在一个手势上运行一个块。我已经从这里的文档中复制了代码......

http://zwaldowski.github.com/BlocksKit/Documentation/Categories/UIGestureRecognizer(BlocksKit).html

...到目前为止,我没有成功,因为我每次都收到相同的构建错误。我四处搜索,找不到与我遇到相同问题的任何东西,所以我希望这里有人可以提供帮助。

我使用的代码是...

UITapGestureRecognizer *singleTap = [UITapGestureRecognizer recognizerWithHandler:^(id sender) {
            NSLog(@"Single tap.");
        } delay:0.18];

我收到的错误是...

/Users/JohnSlater/Desktop/iOS Apps/Flink/flink/ViewController.m:202:91: Incompatible block pointer types sending 'void (^)(id)' to parameter of type 'BKGestureRecognizerBlock' (aka 'void (^)(UIGestureRecognizer *, UIGestureRecognizerState, CGPoint)')

提前致谢

【问题讨论】:

    标签: ios xcode objective-c-blocks block build-error


    【解决方案1】:

    看一下报错信息中block的参数。您的代码有一个参数,发件人。但是该块需要一个 UIGestureRecognizer、一个 UIGestureRecognizerState 和一个 CGPoint。所以,它应该看起来像

    [UITapGesture recognizerWithHandler:^(UIGestureRecognizer *recognizer, UIGestureRecognizerState UIGestureRecognizerStateEnded, CGPoint point){
    }];
    

    【讨论】:

    • +1 - typedef void(^BKGestureRecognizerBlock)(UIGestureRecognizer *sender, UIGestureRecognizerState state, CGPoint location);
    【解决方案2】:

    UITapGestureRecognizer *singleTap = [UITapGestureRecognizer recognizerWithHandler:^(UIGestureRecognizer *sender, UIGestureRecognizerState state, CGPoint point ) { NSLog(@"Single tap."); } delay:0.18];

    会起作用。
    不知道为什么,但例子here 似乎是错误的。 BKGestureRecognizerBlock 用 3 个参数声明了 here。所以你的链接器是正确的抱怨。

    【讨论】:

      猜你喜欢
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2021-08-06
      • 2015-08-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多