0

私はtoolbarViewControllerと呼ばれるUIViewControllerのサブクラスを作成し、このView ControllerでUIButtonを宣言し、そのターゲットを次のように指定しました

UIButton *button = [[UIButton alloc]initWithFrame:myFrame];
[button addTarget:self action:@selector(doSomething) forContorlEvents:UIControlEventTouchUpInside];

次に、別のViewControllerで次のことを行います

toolbarViewController *toolbar = [[toolbarViewController alloc]init];
[self.view addSubview:toolbar.view];

問題は、ボタンを押すと例外が発生することです。認識されないセレクター(doSomething)がインスタンスに送信されます。ここで何が間違っているのでしょうか。

routerViewController.hのdoSomething宣言

-(void)doSomething;

およびtoolbarViewController.m

-(void)doSomething{ NSLog("doSomething got called"); }
4

3 に答える 3

1

の宣言を確認してくださいdoSomething。のようなIBActionを宣言する場合は-(IBAction)doSomething:(id)sender、次のようなセレクターを追加する必要があります。

[button addTarget:self action:@selector(doSomething:) forContorlEvents:UIControlEventTouchUpInside];

それ以外の

[button addTarget:self action:@selector(doSomething) forContorlEvents:UIControlEventTouchUpInside];
于 2012-06-04T06:40:35.647 に答える
1

ARCを使用する場合は、toolbarViewControllerを割り当てますが、リリースがあります。これを試すことができます。

ViewController.h
@interface ViewController : UIViewController{
    toolbarViewController * toolbar;
}
@property(nonatomic,strong) toolbarViewController * toolbar;


ViewController.m
@synthesize toolbar = _toolbar;


    toolbar = [[toolbarViewController alloc]initWithNibName:@"toolbarViewController" bundle:[NSBundle mainBundle]];

割り当てボタンはこれを行うことができます:

UIButton *bt = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        bt.frame = myFrame;
        [bt addTarget:self action:@selector(dosomething) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:bt];
于 2012-06-04T07:00:54.397 に答える
0

UITapGestureRecognizer考えられるケースの1つは、UIButtonのスーパービューにを追加する場合です。UITapGestureRecognizersiOS5では、ビュー内のタップをキャンセルしないという問題があるようです。

だからあなたがする必要があるのは

tapGesture.cancelsTouchesInView = NO;

それが役に立ったかどうか教えてください!

于 2013-05-15T01:11:55.067 に答える