Próbuję zaimplementować etykietę z 6 liniami wysokiego poziomu i chcę, aby była możliwa do ogniskowania. Idealnie byłoby to oznaczać rozszerzenie klasy UILabel, aby utworzyć składnik niestandardowy. Próbowałem, wykonując canBecomeFocused
i didUpdateFocusInContext
, ale mój UILabel nie wydaje się skupić.Ulepsz UILabel i tappable (tvOS)
Próbowałem również zastąpić UILabel z UIButton, ale przyciski nie są tak naprawdę zoptymalizowane dla tego rodzaju rzeczy. Oznaczałoby to również, że muszę zmienić wartość buttonType
na fokus z niestandardowego na zwykły .. a buttonType wydaje się być właściwością gotową.
W rzeczywistości chciałbym mieć dokładnie tę samą etykietę tekstową zaimplementowaną przez Apple w aplikacji Apple TV Movies. W opisie filmu znajduje się etykieta tekstowa z kilkoma liniami tekstu i "więcej". Po skupieniu wygląda jak przycisk (cienie dookoła) i zmienia kolor tła. Po dotknięciu otwiera okno modalne z pełnym opisem filmu.
Wszelkie sugestie? A może ktoś już zaimplementował tę niestandardową kontrolę dla tvOS? Albo lepiej - jest tam składnik Apple, który to robi i czegoś mi brakuje.
PS: Swift rozwiązaniem byłoby mile widziane :)
Dzięki za tę odpowiedź, zmodyfikowałem ją trochę dla mojego projektu. https://gist.github.com/Cedrick84/8922a0af730c39c05794 – Cedrick
Czy ostatnio coś zmieniło się w TVOS, co spowodowałoby, że to nie zadziała? Nadal nie mogę uzyskać TextView, aby uzyskać skupienie bez względu na to, co próbuję. Przeszedłem dwiema ścieżkami przez kernelecynę i @Cedrick. –
Tak, zrobiłem coś podobnego dla UIImageView i udało mi się to skupić (nawet jeśli nie było to w widoku tabeli lub kolekcji), ale nie mogłem uruchomić TextView. Nie mam pojęcia dlaczego teraz, tak jak zrobiłem wszystko, co wyżej wspomniałem. – c0d3Junk13