2015-01-25 11 views
14

Stworzyłem UIScrollView w moich scenorysach i dodałem 12 UIButtons w widoku kontenera, który jest wewnątrz UIScrollView.UButtons na dole UIScrollView nie działa

podczas pracy z symulatorem iPhone'a 5s, 9 przycisków jest widocznych na ekranie, pozostałe przyciski są widoczne tylko podczas przewijania w dół.

9 przycisków, które można początkowo zobaczyć na ekranie, można obsługiwać za pomocą. Jednak trzy przyciski na dole widoku przewijania (które muszą być przewijane, aby być widocznym) nie mogą być przedmiotem interakcji.

Uruchomiłem aplikację na symulatorze iPhone 6, który wyświetla wszystkie 12 przycisków na ekranie bez konieczności przewijania, a dolne przyciski 3 działają.

Używam autolayout.

Próbowałem gryźć z contentSize z UIScrollView i to nie pomaga.

+0

pokazać kod gdzie jesteś dodanie przycisków. – Rashad

+0

Ramka 'UIScrollView' (lub widok kontenera) może nie być zgodna z oczekiwaniami. Upewnij się, że jest ustawiony do klipów subviews i uruchamia się ponownie. – Stavash

+0

@Rashad Dodałem przyciski za pomocą storyboardu –

Odpowiedz

25

Wygląda na to, że trzeba zwiększyć wysokość kadru widoku kontenera. Opcja przewijania w widoku contentSize wpływa tylko na sposób jej przewijania, co nie ma tu znaczenia.

Jeśli przycisk znajduje się poza widokiem kontenera, nadal będzie się wyświetlać. Nie może jednak reagować na żadne zdarzenie dotykowe.

+0

która zadziałała! dzięki, nie miał pojęcia, że ​​wysokość widoku kontenera i contentSize z scrollView były dwie różne rzeczy –

+0

@WesleyOw Nie ma za co. Czy możesz być tak dobry, aby głosić i zaakceptować tę odpowiedź? – skyline75489

+0

przebije, ale nie mam wystarczającej liczby rep :( –

2

Dla mnie to wszystko było tylko odznacz pole wyboru Ustaw przewijania Zobacz wypustkami w serii ujęć tego ViewController.

enter image description here

PS: Powyższe odpowiedzi nie pracował dla mnie.

2

podczas korzystania z przewijania w scenopisie z autolayout. zwykle jest konfigurowany przy użyciu widoku treści wewnątrz przewijania, który będzie zawierał wszystkie inne widoki (na przykład przyciski, etykiety itp.), widok zawartości jest zwykle ustawiony tak, aby miał równą wysokość i równą szerokość. Aby powiększyć widok zawartości, należy dodać ograniczenie wysokości, a następnie przypisać je do gniazdka, aby z łatwością można było manipulować jego wartością w kodzie. następnie ustaw priorytet ograniczenia wysokości widoku na 1000 ("wymagany") i ustaw "równą szerokość" do widoku: "priorytet ograniczenia" na 750 (wysoki).

0

Dodaj wszystkie subviews z kontenera do ScrollView. I ukryj pojemnik. Upewnij się, że kontener (ContainerView of scrollView) również powinien być subView of scrollView.

0

Inną opcją jest zmniejszenie priorytetu ograniczenia Content View.Center Y.

W Xcode 9 umieściłem contentView w razie potrzeby, a przycisk rozwinął się poniżej widoku na iPhone 5. Dynamicznie zmieniłem rozmiar scrollView.contentSize.height i contentView.frame w kontrolerze widoku. Przewinął się dla mnie scrollView, ale wciąż nie mogłem wybrać przycisku i widziałem ostrzeżenia w Storyboard.

Po obniżeniu priorytetu dla wiązania Center Y Alignment dla contentView, ostrzeżenia w Storyboard zniknęły i mogłem przewinąć do dołu scrollView i wybrać przycisk na symulatorze iPhone 5.

enter image description here

UWAGA: Ja wciąż sprawdzając rozmiar urządzenia i rozmiaru wartość scrollView.contentSize.height w viewWillLayoutSubviews() dla małych urządzeń.

override func viewWillLayoutSubviews() { 
     super.viewWillLayoutSubviews() 
     scrollView.contentSize.height = (UIDevice.current.isSmallDevice) ? 560 : contentView.frame.size.height 
    } 

(UIDevice.current.isSmallDevice jest wezwanie do przedłużenia UIDevice zwracającej bool określona przez wielkość ekranu)

Powiązane problemy