0

私は客観的cの初心者です画像があり、クリックしたときに警告メッセージを表示したいのですが、このような画像を追加しました-

AHolder = [[UIImageView alloc] initWithFrame:CGRectMake(5, 80, 40, 40)];
    UIImage *imageA = [UIImage imageNamed:@"A.png"];
    AHolder.image = imageA;
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(aPressed:) name:@"aPressed" object:nil];
    [view addSubview:AHolder]

そしてそのイベントはこんな――

 -(IBAction)aPressed:(id)sender
{
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"hello" message:@"a pressed" delegate:self cancelButtonTitle:@"cancle" otherButtonTitles:@"ok",nil];
    [alert show];
    [alert release];
}

エラーは発生しませんが、画像をクリックしても何も起こりません。解決策を教えてください。

4

5 に答える 5

2

画像ビューにタップ ジェスチャを追加します。

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture)];
tapGesture.numberOfTapsRequired=1;
[AHolder setUserInteractionEnabled:YES];
[AHolder addGestureRecognizer:tapGesture];
[tapGesture release];

-(void)handleTapGesture{
//do what ever you want here
}

それ以外の場合は、単に背景画像付きのボタンを使用してください。

于 2013-04-17T12:58:01.813 に答える
0

xib ファイルに「round rect button」オブジェクトを追加します。「Type」属性を「custom」に、「Background」属性を「nameofyourimage.extension」に設定します。

aPressed: メソッドを、丸い長方形ボタンの touch up inside イベントに接続します。

于 2013-04-17T15:28:41.580 に答える
0

tapGestureRecognizer を使用します。そのため、ユーザーが iamgeview をタップするたびに、好きなことを行うことができます

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(aPressed)];
tapGesture.numberOfTapsRequired=1;
[aHolder setUserInteractionEnabled:YES];
[aHolder addGestureRecognizer:tapGesture];

-(void)aPressed{
//do what ever you want here
}
于 2013-04-17T12:59:33.820 に答える
0

UIButtonあなたのイメージを重ねる必要はありません。UIButtonではなく単に使用してUIImageViewください。必要な画像に設定UIButton backgroundimageまたはimageプロパティを設定できます。

これ以外にも、次のUITapGestureRecognizerように使用できます。

このコードをviewDidLoad

UITapGestureRecognizer *rec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)];
[yourImage addGestureRecognizer:rec];
[yourImage setUserInteractionEnabled:YES]; //!! this is important

このデリゲートメソッドを実装します

#define unused_related_to_gesture
- (void)tapRecognized:(UITapGestureRecognizer *)recognizer
{
    if(recognizer.state == UIGestureRecognizerStateBegan)
    {
        NSLog(@"\nUIGestureRecognizerStateBegan\n");
    }
    if(recognizer.state == UIGestureRecognizerStateCancelled)
    {
        NSLog(@"\nUIGestureRecognizerStateCancelled\n");
    }
    if(recognizer.state == UIGestureRecognizerStateChanged)
    {
        NSLog(@"\nUIGestureRecognizerStateChanged\n");
    }
    if(recognizer.state == UIGestureRecognizerStateEnded)
    {
        NSLog(@"\nUIGestureRecognizerStateEnded\n");
    }
    if(recognizer.state == UIGestureRecognizerStateFailed)
    {
        NSLog(@"\nUIGestureRecognizerStateFailed\n");
    }
    if(recognizer.state == UIGestureRecognizerStatePossible)
    {
        NSLog(@"\nUIGestureRecognizerStatePossible\n");
    }
    if(recognizer.state == UIGestureRecognizerStateRecognized)
    {
        NSLog(@"\nUIGestureRecognizerStateRecognized\n");
        // this section will contain your code of clicking the image.
        UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"hello" message:@"a pressed" delegate:self cancelButtonTitle:@"cancle" otherButtonTitles:@"ok",nil];
        [alert show];
        [alert release];
    }
}
于 2013-04-18T08:03:00.680 に答える
0

あなたの質問に対する非常にシンプルで最も一般的な解決策は、画像にカスタム UIButton を使用することです。次に、ボタンのクリック時に呼び出したいメソッドとしてセレクターを設定するだけです。UIButton と UIImage のフレームが同じであることを確認してください。

于 2013-04-17T13:21:50.310 に答える