2015-07-28 13 views
12

Zrobiłem niestandardowy UITableViewCell o nazwie "SwitchCell", który ma przełącznik. Tylko w systemie iOS9 przy użyciu wersji beta Xcode 7 widok zawartości w komórce znajduje się nad przełącznikiem. (Patrz zrzut ekranu View Hierarchii można wyraźnie zobaczyć, że widok zawartość komórki jest na wierzchu innych poglądów..): enter image description hereiOS9 - UITableViewCellContentView ukrywa kontrolki wewnątrz komórki

Więc wszystkie detale do UISwitch są przechwytywane, a IBAction nie ognia . W iOS8 nie stanowi to problemu. Zobacz zrzut ekranu symulatora iOS 8.4. Widać, że nie ma widoku treści na formanty: enter image description here

Czy ktoś miał ten problem? Próbowałem przerobić NIB od zera, ale taki sam wynik występuje.

Moje NIB to widok o dowolnym kształcie bez paska stanu. Ma dwa wyjścia: jeden dla UILabel, jeden dla UISwitcha.

EDYCJA: proszę sprawdzić odpowiedź poniżej, która prosi o sprawdzenie, czy widok główny komórki nie jest tylko UIView, ale UITableViewCell. Ten problem może być również efektem ubocznym tego.

Odpowiedz

11

Po dalszych badań i poszukiwań, znalazłem moje rozwiązanie tutaj: Button in UITableViewCell not responding under ios 7

Co ustalone to dla mnie było: cell.contentView.userInteractionEnabled = NO;

Dzięki temu widok zawartości komórki nie może przejąć zdarzeń dotyku, nawet jeśli znajduje się nad innymi widokami.

Ten problem pojawił się nie tylko w systemie iOS9, ale również w iOS7. W systemie iOS 8 widok zawartości znajdował się za kontrolkami.

+3

Działa tutaj na podglądzie programisty iOS 9.1. W każdym razie nie ma sensu, contentView JEST WIDOKIEM RODZINNYM NA HIERARCHII, nie powinien być nad innymi widokami. – edulpn

+0

Miałem ten sam efekt z Xcode 7.1.1. Sprawia, że ​​zastanawiam się, dlaczego UITableViewCellContentView jest na szczycie wszystkiego w tej komórce. – snoersnoer

2

Problem może dotyczyć pliku .xib dla komórki. Gdy utworzysz komórkę w osobnym pliku .xib, pamiętaj, aby przeciągnąć UITableViewCell na płótnie, nie UIView.

1

Miałem ten problem, gdy ponownie użyłem komórki jako .xib. Nie zdawałem sobie sprawy, ale kiedy po raz pierwszy stworzyłem xib, domyślny widok, który utworzył, był w rzeczywistości UIView, a nie UITableViewCell. Wygląda na to, że UIKit na pewnym etapie dodaje widok zawartości na moich pozostałych elementach i dlatego przerywa pewne zdarzenia (np. Zdarzenia dotykowe).

Rozwiązałem to, otwierając mój plik XIB i przeciągając UITableViewCell na płótno i kopiując moje elementy interfejsu użytkownika ze starego widoku do nowej komórki.

Następnie, dodatkowe ustawienia stały się dostępne w inspektorze atrybutów, które pasowały do ​​tych dla UITableViewCell.

Powiązane problemy