2011-07-13 10 views
38

Próbuję dodać subviews do UIButton. To działa dobrze teraz. Ale przycisk nie jest już klikalny, gdy tylko dodaję subviews.addSubView do UIButton

używam następujący kod:

UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    button.frame = CGRectMake(column*100+24, row*80+10, 64, 64); 
[button addSubview:asyncImage]; 
[button addSubview:price]; 
    [button addTarget:self 
       action:@selector(buttonClicked:) 
    forControlEvents:UIControlEventTouchUpInside]; 

Przycisk działa ponownie, jeśli wyciąć 2 addsubviews. Jeśli ktoś wie, jak to naprawić, byłoby wspaniale!

THNX !!!

Odpowiedz

73

Znalazłem szybkie rozwiązania. Musiałem ustawić asyncimageview na:

asyncImage.userInteractionEnabled = NO; 
     asyncImage.exclusiveTouch = NO; 

Po tym zadziałało!

+0

Odpowiemy na moje pytania w ciągu 2 dni, o ile będzie to możliwe. – Jos

+0

Zastanawiałem się co do właściwości "userInteractionEnabled", uważałem, że ustawienie na "TAK" powinno faktycznie uchwycić zdarzenie kliknięcia na podglądzie przycisku. WIELKA ODPOWIEDZ! – Shvalb

+0

Kto po 5 godzinie znajdę cię! dzięki ! – YannickSteph

3

try:

[UIButton buttonWithType:UIButtonTypeCustom];

zamiast:

[UIButton buttonWithType:UIButtonControlType];

+0

to nie zadziała, to daje mi błąd, nie rozpoznaje UIButtonControlType – Jos

+0

oh, a następnie spróbuj ustawić interakcji użytkownika do włączona, jak to [TWÓJ PRZYCISK setUserInteractionEnabled: // bool, dla ciebie jego TAK – user842059

+0

Próbowałem tego dla 2 subviews (cena i asyncImage) i dla przycisku. Bit nie zrobił żadnej różnicy ... – Jos

1

Czy próbowali umieścić:

[asyncImage setUserInteractionEnabled:YES]; 
+0

wypróbowałem to, ale bez powodzenia ... :( – Jos

+0

czy próbowałeś także z innym widokiem? [Cena setUserInteractionEnabled: TAK]; –

+0

Tak, również bez powodzenia – Jos

1

w tym samym sitiation dokonać tej czynności: dziedzicz z Uibutton i dodaj do siebie wszystkie etykiety i obrazki przycisku, wreszcie umieść nowy przycisk, aby wyświetlić ostatni podgląd i dodaj cele przycisku samo do tego ostatniego przycisku (również ustaw backgroundColor, aby wyczyścićColor for transparent). teraz będzie można klikać i działa dobrze.

+0

Jakoś się pomysł, ale nie wiem dokładnie, co muszę zrobić, czy masz krótki przykład? Thnx! – Jos

+0

Głównie nie rozumiem, co masz na myśli mówiąc o tym, że akcja dziedziczy z UIButton i ustawia ją na własny. do self.button daje mi błąd Thnx! – Jos

+0

Podam przykład: [link] (http://pastebin.com/r8yQrB0Y) –

1

Ważne jest, aby upewnić się, że userInteractionEnabled zostanie ustawione na NO. Na szczęście działa natychmiast dla UIImageView i (może dla innych podklas z UIView, ale są to najbardziej popularne widoki dodane do przycisku), ponieważ domyślnie dla tych klas jest domyślnie ustawiony na NO. Niestety jest ustawiony na YES w UIView, więc pamiętaj o zmianie w tym przypadku. Przesyłanie z innymi flagami nie powinno być konieczne. Problem polega na tym, że wiele osób nie wie, że domyślna wartość tej flagi różni się w podklasach.

+0

Witam @ Julian, to nie działa dla mnie ... – benhi

+0

@benhi, fajne. Jeśli chcesz, żebym pomógł - więcej informacji będzie pomocnych: P –

+0

Julian @property (słaby, nieatomowy) UIButton IBOutlet * popularny; popularne = [przycisk UIButtonWithType: UIButtonTypeCustom]; UILabel * label = [[przydzielanie UILabel] initWithFrame: CGRectMake (0, 0, popularne.frame.size.width, popularne.frame.size.height)]; label.text = @ "ButtonTitle"; label.textColor = [UIColor redColor]; label.userInteractionEnabled = NIE; [popularne addSubview: etykieta]; – benhi

1

w Swift, badanie to jest mieć swój UIButton zablokowany

uibtn.userInteractionEnabled = false 
uibtn.exclusiveTouch = false