0

このような UIButton にイベントを追加するために addTarget を使用しようとしました

EGOImageButton* image = [[EGOImageButton alloc] initWithPlaceholderImage:[UIImage imageNamed:@"screen.png"]];
    [image setImageURL:[NSURL URLWithString:thumbnail]];
    [image setFrame:CGRectMake(x, y, self.cellsize, self.cellsize)];
    [image setTag: [self.photoIDs count]-1];
    [image addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:image];
    [image release];

関数定義は次のとおりです。

-(void)buttonTouched:(id)sender {
   NSLog(@"Thumbnail Clicked");
 }

これは EGOImageButton init 関数のコードです

- (id)initWithPlaceholderImage:(UIImage*)anImage {
return [self initWithPlaceholderImage:anImage delegate:nil];    }

- (id)initWithPlaceholderImage:(UIImage*)anImage delegate:(id<EGOImageButtonDelegate>)aDelegate {
if((self = [super initWithFrame:CGRectZero])) {
    self.placeholderImage = anImage;
    self.delegate = aDelegate;
    [self setImage:self.placeholderImage forState:UIControlStateNormal];
}

return self;

}

エラーは次のようになります。

-[ NSCFType buttonTouched:]: インスタンス 0x6c804a0 に送信された認識されないセレクター 2012-06-06 01:36:59.061 Facebook のフォト コラージュ [2416:16103] *キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。 :]: 認識されないセレクターがインスタンス 0x6c804a0 に送信されました' *最初のスロー時のコール スタック: ( 0 CoreFoundation 0x0046a5a9 __exceptionPreprocess + 185 1 libobjc.A.dylib 0x01402313 objc_exception_throw + 44 2 CoreFoundation 0x0046c0bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 1 CoreFoundation 3 0x003db966 __転送+ 966 4 CoreFoundation 0x003db522 _CF_forwarding_prep_0 + 50

4

4 に答える 4

1

正しく設定されているように見えるので、呼び出されないのは少し奇妙です ( https://stackoverflow.com/questions/8968446/cant-able-to-add-click-event-in-uibutton 参照として)。私の最初の推測では、実際にコードにアクセスする必要はありませんが、何かが画像の上にあるため、クリック イベントが UIButton サブクラス (EGOImageButton) に渡されないということです。

于 2012-06-05T13:21:14.400 に答える
1

セレクターが参照されているメソッドに UIButton タイプのセンダーが含まれていることを確認してください

このように -(void)buttonTouched:(UIButton *)sender

于 2012-06-07T06:04:50.153 に答える
0

アクション:

@selector(buttonTouched:)

コロンは必要ないと思います : ここで、それを削除して、次のように action: を試してください:

@selector(buttonTouched)
于 2012-06-05T13:29:53.737 に答える
-1

buttonTouchedメソッドの戻り値の型はIBActionではなく である必要があると思いますvoid

于 2012-06-05T13:12:53.387 に答える