2010-08-20 8 views
19

guys, chcę kliknąć mój uiButton po dodaniu do UIImageVIew, ale to nie działa. to mój kod:nie można kliknąć UIButton po dodaniu do UIImageView

UIButton *btnDetail = [[UIButton buttonWithType:UIButtonTypeDetailDisclosure]retain]; 

btnDetail.frame = CGRectMake(0,0,100,100); 
[btnDetail addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventAllTouchEvents]; 

[self.imageView addSubview:btnDetail]; 

przycisk nie może kliknąć kiedy dodać go do UIImageView, ale jeśli nie dodawać go do UIImageView, że działa prawidłowo. proszę ktoś mi pomóc

Odpowiedz

47

Uwaga: Domyślnie własność UIImageViewUserInteraction jest ustawiony na NO. To miejsce, w którym większość z nas popełnia błąd. Najważniejszą rzeczą do sprawdzenia podczas dodawania dowolnej kontroli do UIImageView jest ustawienie jej właściwości UserInteractionEnabled na TAK.

[self.imageView setUserInteractionEnabled:YES]; 

więc zmodyfikować kod jak poniżej:

UIButton *btnDetail = [[UIButton buttonWithType:UIButtonTypeDetailDisclosure]retain]; 

btnDetail.frame = CGRectMake(0,0,100,100); 
[btnDetail addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventAllTouchEvents]; 

[self.imageView addSubview:btnDetail]; 
[self.imageView bringSubviewToFront:btnDetail]; 
[self.imageView setUserInteractionEnabled:YES]; 

Happy Coding ...

+0

Próbowałem twój kod, ale nic się nie stało, nadal nie mogę go kliknąć. , aby uzyskać więcej informacji: przed dodaniem UIButton, zostały dodałem kolejną UIImage do tego UiVIewImage, czy ma wpływ? –

+0

Sprawdź nowy kod. Zaimplementowałem go i przetestowałem. Teraz działa poprawnie. Rzeczywiście, interakcja użytkownika z podglądem obrazu jest domyślnie wyłączona, więc nie można było kliknąć niczego dodanego do niego. Dlatego ustawiłem interakcję użytkownika jako włączoną. Teraz działa dobrze –

+1

thnx guys działa idealnie, nie mogę uwierzyć, że mój błąd jest po prostu umieścić [self.imageView setUserInteractionEnabled: YES]; przed dodaniem podglądu, na pewno nie zadziała, hha niedorzecznie, dziękuję bardzo, chłopaki ... –

5

UIImageView ma userInteractionProperty ustawiona na NIE domyślnie, więc nie obsługiwać dotyka i nie rozprzestrzeniać je do jej subviews. Spróbuj ustawić TAK:

self.imageView.userInteractionEnabled = YES; 
+0

Próbowałem, ale nadal nie działa –

+0

Właśnie próbowałem tego w przykładowym projekcie - to działa idealnie dla mnie ... – Vladimir

+0

thnx faceci, działa to doskonale dla mnie też .. –

3

Hej, użyłem tego kodu. działa poprawnie

UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
button.frame = CGRectMake(80.0, 210.0, 100.0, 20.0); 
[button addTarget:self action:@selector(show) forControlEvents:UIControlEventTouchUpInside]; 
[button setTitle:@"ShowView" forState:UIControlStateNormal]; 

[image2 addSubview:button]; 
[image2 bringSubviewToFront:button]; 
[image2 setUserInteractionEnabled:YES]; 
0

Jeśli ktoś ma problem z Uibuttonem w UIImageView, wykonaj kolejne kroki.

1 Tworzenie własnością UIImageView:

@property (nonatomic, strong) UIImageView *buttonImageView; 

2 Niż syntetyzować go:

@synthesize buttonImageView = _buttonImageView; 

3 Tworzenie metody realizacji:

- (UIImageView *) buttonImageView { 

    _buttonImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; 
    [_buttonImageView setBackgroundColor:[UIColor whiteColor]]; 
    [_buttonImageView setUserInteractionEnabled:YES]; 

    UIButton *addButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    [addButton setTitle:@"add button" forState:UIControlStateNormal]; 
    addButton.frame = CGRectMake(0, 0, 160, 50); 
    [addButton setUserInteractionEnabled:YES]; 
    [addButton setEnabled:YES]; 
    [addButton setAlpha:1]; 
    [addButton addTarget:self action:@selector(addNewImage) forControlEvents:UIControlEventTouchUpInside]; 

    return _buttonImageView; 
} 

4 Na przykład w metodzie viewDidLoad dodać podrzędny do Twój widok:

[self.view addSubview:self.buttonImageView]; 
Powiązane problemy