0

エラーが「'blah' はこのスコープで宣言されていません」である場合、オブジェクトが正しく作成されていないことを意味することはわかっていますが、WeeLoader テンプレートと THEOS を使用してコンパイルする iOS 用の通知センター ウィジェットを作成している場合、このエラーが発生しました: 'UITapGestureRecognizer' はこのスコープで宣言されていませんでした。

ここに私の.mmファイルがあります:

- (void)loadFullView {
     UITapGestureRecognizer *Tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];


     UIImage *bg = [[UIImage imageWithContentsOfFile:@"/System/Library/WeeAppPlugins/WeeAppTest.bundle/WeeAppBackground.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:71];
     UIImageView *bgView = [[UIImageView alloc] initWithImage:bg];
     bgView.frame = CGRectMake(0, 0, 316, 71);     
     bgView.userInteractionEnabled = YES;

     [bgView addGestureRecognizer:Tap];

     [_view addSubview:bgView];
     [bgView release];
     [Tap release];

      UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 316, 71)];
      lbl.backgroundColor = [UIColor clearColor];
      lbl.textColor = [UIColor whiteColor];
      lbl.text = @"Hello world";
      lbl.textAlignment = UITextAlignmentCenter;
      [_view addSubview:lbl];
      [lbl release];
}

-(void) handleTapGesture:(UIGestureRecognizer *) sender {

}

私は何を間違っていますか?ところで、コードは UITapGestureRecognizer がなくても機能します。

ありがとうございました。

4

1 に答える 1

1

ここで起こっていることがいくつかあると思います。

viewDidLoadジェスチャレコグナイザーはまたはinitメソッドで宣言する必要があるため、スコープ外エラーが発生している可能性があると思います。

また、UITapGestureRecognizer *Tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];あなたはあなたのメソッドを呼び出しますhandleSingleTap:

したがって、あなたの方法は-(void) handleSingleTap:(UITapGestureRecognizer *) sender

于 2013-03-04T00:45:56.610 に答える