0

ラベルを作成してタップ ジェスチャを設定しましたが、タップするとエラーが表示されます。

私のコードは.hファイルです

@interface ViewController : UIViewController
{
    UILabel *alabel;
}
@property (strong, nonatomic) UILabel *alabel;

.m ファイルで

- (void)viewDidLoad
{
    [super viewDidLoad];

    alabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 50)];
    alabel.text = @"Drag me!";

    alabel.userInteractionEnabled = YES;

    UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap)];
    [alabel addGestureRecognizer:tapGesture];

    [self.view addSubview:alabel];
}

- (void)labelTap:(UITapGestureRecognizer *)tapGesture {
    TouchLabelViewController *touchLabelViewController = [[TouchLabelViewController alloc] initWithNibName:@"TouchLabelViewController" bundle:[NSBundle mainBundle]];
    [self presentModalViewController:touchLabelViewController animated:NO];
    }

ログ表示

2012-10-29 11:19:17.313 DragableControll[795:f803] -[ViewController labelTap]: unrecognized selector sent to instance 0x68956b0
2012-10-29 11:19:17.316 DragableControll[795:f803] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[ViewController labelTap]: unrecognized selector sent to instance 0x68956b0'
4

4 に答える 4

1

間違って Selector を Tap ジェスチャに追加していたコードを確認してください

  UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap)];

あなたは次のようにする必要があります

   UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)];
于 2012-10-29T05:58:02.580 に答える
0

あなたselectorは正しく追加されていません.引数を指定したセレクターメソッドを忘れてしまいました: at last ie (labelTap:)

編集:あなたの行を私のものに置き換えてください

UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)];

UIGestureDelegate.h ファイルに登録する

于 2012-10-29T05:55:57.183 に答える
0

ここでコードを変更します

TapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)];

セレクター(labeltap)を設定しましたが、 (labeltap:)である必要があります

于 2012-10-29T06:06:07.150 に答える
0

以下のコードを置き換えます

UITapGestureRecognizer *tapGesture =[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelTap:)];

注: コロンの近くに labelTab ie (labelTap:)を追加します。

于 2012-10-29T05:59:24.250 に答える