1

私のアプリでは、ネットワークからいくつかのデータを解析し、いくつかのカスタマイズされたボタンを追加する必要があります。後でユーザーがクリックすると、詳細が表示されます。

  • 画像ビューはアプリの背景です
  • これらのボタンの位置 (xPos、yPos) はサーバーから解析されます (動的データ)
  • プログラムで追加したこれらのボタンをクリックしても印刷されません

追加するためのコードは次のようなものです

    ...
    [businessButton setImage:businessImage forState:UIControlStateNormal];
    [businessButton setFrame:CGRectMake([xPos floatValue], [yPos floatValue], [businessImage size].width/2, [businessImage size].width/2)];
    [businessButton addTarget:self.imageView action:@selector(serviceProviderSelected:) forControlEvents:UIControlEventTouchUpInside];
    ...

- (void)serviceProviderSelected:(id)sender
{
    NSLog(@"sp tapped\n");
}

別のダミーアプリを作成して(同じことだと思います)、ボタンは正常に機能します...

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    UIButton *customizedButton = [UIButton buttonWithType:UIButtonTypeCustom];
    UIImage *image = [UIImage imageNamed:@"business-icon.png"];
    [customizedButton setImage:image forState:UIControlStateNormal];
    [customizedButton setFrame:CGRectMake(100, 100, 20, 20)];
    [customizedButton addTarget:self action:@selector(customButtonPressed:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:customizedButton];
}

- (IBAction)buttonPressed:(id)sender {
    NSLog(@"yes, pressed\n");
}

コードで作成したボタンは既にリリースされており、これらのボタンを格納するために使用する配列を出力しているのではないかと疑っていますが、それらは有効なアドレスです...

ありがとう!

ウィリアム

4

3 に答える 3

1

理由がわかりました。

の代わりに[self.imageView addSubview:businessButton];[self.view addSubview:businessButton];動作するようになりました。

ストーリーボードに imageView を追加した後のビューの関係がどのようになっているのか、よくわからなかったと思います。

于 2012-12-25T01:43:02.837 に答える
1

UIImageView では、デフォルトでユーザー操作が無効になっています。UIButton などをサブビューとして機能させるには、このプロパティを YES に設定する必要があります

于 2013-02-12T13:29:48.420 に答える
0

あなたがする必要があります:

[businessButton addTarget:self action:@selector(serviceProviderSelected:) forControlEvents:UIControlEventTouchUpInside];

ターゲットは、セレクターを定義するクラスである必要があります。

于 2012-12-25T01:37:21.330 に答える