4

こんにちは、UIButtonプログラムで作成した がありますが、残念ながら機能していません。クリックしてUIButtonも何も起こりません。何が問題なのかわからない。どんな助けでも大歓迎です。

UIButton *connectedStories = [UIButton buttonWithType:UIButtonTypeRoundedRect];

//set the position of the button
connectedStories.frame = CGRectMake(10, 10, 1900, 30);
connectedStories.backgroundColor = [UIColor whiteColor]; 
[connectedStories setTitle:@"Button" forState:UIControlStateNormal];
[connectedStories setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[connectedStories addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside];
[label setText:storyTitle];
[label1 setText:storyDescription];
[contentView addSubview:backGroundImageView];
[contentView addSubview:connectedStories];
[contentView addSubview:label];
[contentView addSubview:label1];

[viewContainer addSubview:contentView];
return contentView;

- (void)buttonClicked
{
  NSLog(@"button clicked");
}
4

5 に答える 5

2

ラベルはボタンではなくタッチを受け取ると思います。userInteractionEnabled = NO; を追加します。あなたのラベルに。

label.userInteractionEnabled = NO;
label1.userInteractionEnabled = NO;
于 2012-05-22T15:36:31.663 に答える
0

コードの上部を次のように変更してみてください。

CGRect frame = CGRectMake(10, 10, 1900, 30);
UIButton *connectedStories = [[UIButton alloc] initWithFrame:frame];

//set the position of the button
[connectedStories setBackgroundColor:[UIColor whiteColor]]; 
[connectedStories setTitle:@"Button" forState:UIControlStateNormal];
[connectedStories setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[connectedStories addTarget:nil action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside];
于 2012-05-22T15:47:28.873 に答える
0

セレクターのメソッドの最後にコロンを追加します

[connectedStories addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
    [label setText:storyTitle];
于 2013-03-15T10:50:23.443 に答える
0

それは次のようなものである可能性が非常に高いです:

[contentView addSubview:backGroundImageView];
[contentView addSubview:connectedStories];
[contentView addSubview:label];
[contentView addSubview:label1];

次の順序で追加する必要があると確信しています。

[contentView addSubview:backGroundImageView];
[contentView addSubview:label];
[contentView addSubview:label1];
[contentView addSubview:connectedStories];

これは、呼び出すaddSubview:と、サブビューの受信者リストの最後に追加され、最新のサブビューが一番上に表示されるためです。

ここでUIViewのドキュメントをチェックしてください

インタラクションが検出されない理由は、touchEvents が label1 によってキャプチャされ、そこで停止しているため、他のサブビューに渡していないためです。

デフォルトでは、最後の subView はすべてのタッチ イベントをキャプチャし、それらを渡しません。

于 2012-05-23T01:36:07.373 に答える
0
UIButton *custombutton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[custombutton addTarget:self
                 action:@selector(aMethod:)
       forControlEvents:UIControlEventTouchUpInside];
[custombutton setTitle:@"Click" forState:UIControlStateNormal];
custombutton.frame = CGRectMake(80.0, 110.0, 160.0, 40.0);
custombutton.titleLabel.textColor = [UIColor colorWithRed: 2.0f/255.0f green: 155.0f/255.0f blue: 213.0f/255.0f  alpha:1];
 [custombutton setImage:[UIImage imageNamed:@"hh.png"] forState:UIControlStateNormal];
 [view addSubview:custombutton];
于 2013-12-31T10:38:22.740 に答える