2010-10-04 8 views
5

Aquí está el código que estoy usando:No se puede obtener mediante programación hecha UIButton para trabajar - iPhone

-(void)viewDidLoad 
{ 
    NSString *checkerPath = [[NSBundle mainBundle] pathForResource:@"black-yellow-checker" ofType:@"png"]; 
    UIImage *checkerImage = [[UIImage alloc] initWithContentsOfFile:checkerPath]; 
    checkerView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f, 230.0f, 320.0f, 280.0f)]; 
    [checkerView setImage:checkerImage]; 

    UIButton *backButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain]; 
    backButton.frame = CGRectMake(45.0f, 175.0f, 230.0f, 50.0f); 
    [backButton setBackgroundImage:[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"yellowButton" ofType:@"png"]] forState:UIControlStateNormal]; 
    [backButton addTarget:self action:@selector(goBackHome:) forControlEvents:UIControlEventTouchDown]; 
    [backButton setTitle:@"Back" forState:UIControlStateNormal]; 
    backButton.titleLabel.font = [UIFont fontWithName:@"Marker Felt" size:30]; 
    backButton.titleLabel.textColor = [UIColor blackColor]; 
    [checkerView addSubview:backButton]; 
} 

- (void)goBackHome:(id)sender 
{ 
    NSLog(@"go back pressed"); 
} 

No sé por qué esto no funciona. El botón aparece, pero cuando lo presiono no sucede nada. Ni siquiera cambia a la imagen "sangrada" cuando la toco. Nada. No se puede usar IB, tiene que ser programáticamente. ¿Alguna idea?

Respuesta

6

UIImageView has userInteractionEnabled set to NO by default. Esto evita que cualquier subvista tenga toques.

Usted podría permitir la interacción del usuario de la vista de la imagen por

checkerView.userInteractionEnabled = YES; 

o crear una nueva UIView para incluir tanto checkerView y la backButton.

UIView* newView = ... 
... 
[newView addSubview:checkerView]; 
[newView addSubview:backButton]; 
+0

AHA. pensé que sería sí por defecto. ya que estás tan bien informado debes probar esto http://stackoverflow.com/questions/3808087/where-to-find-what-mkdomainerror-error-4-means – Marty

3

Creo que forControlEvents: tiene que ser UIControlEventTouchUpInside.

+0

nah también funciona con uicontroleventouchdown – Marty

Cuestiones relacionadas