0

uiControl のサブクラス化のテストを行っていますが、まだ機能していません。

ここに私のコード:

MainVC.m::

- (void)viewDidLoad
{
    [super viewDidLoad];

    TesteaContol *tt = [[[TesteaContol alloc]initWithFrame:CGRectMake(20, 20, 80, 30)]autorelease];
    [tt addTarget:self action:@selector(ttActiono:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:tt];
}

- (void)ttActiono:(TesteaContol*)message
{
    NSLog(@"proyection");
}

TesteaContol.h

@interface TesteaContol : UIControl

TesteaControl.m

#import "TesteaContol.h"

    @implementation TesteaContol

    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            // Initialization code

            NSLog(@"cao");

            UIButton *vacas = [UIButton buttonWithType:UIButtonTypeRoundedRect];
            [vacas setTitle:@"pingus" forState:UIControlStateNormal];   ;
            vacas.titleLabel.textColor = [UIColor blackColor];

            vacas.frame = CGRectMake(0, 0, 80, 40);
            [vacas addTarget:self action:@selector(vacasPressed:) forControlEvents:UIControlStateNormal];

            [self addSubview:vacas];
        }
        return self;
    }


    - (void) vacasPressed:(id) sender
    {
        NSLog(@"vacanio");

        [self sendActionsForControlEvents:UIControlEventTouchUpInside];

    }

だから私はuiButtonでテストしています.ボタンは見えますが、タッチに反応しません.

私は何が欠けていますか?

ありがとう!

4

1 に答える 1

3

ここに問題があります:

[vacas addTarget:self action:@selector(vacasPressed:) 
    forControlEvents:UIControlStateNormal];

「forControlEvents」部分は、そうでないタイプUIControlEventsである必要がUIControlStateNormalあります。通常のボタンの場合は、次のように置き換えUIControlStateNormal ますUIControlEventTouchUpInside

[vacas addTarget:self action:@selector(vacasPressed:)
    forControlEvents:UIControlEventTouchUpInside];
于 2012-04-17T11:44:53.080 に答える