Porównaj ceny domen i usług IT, sprzedawców z całego świata

Ogranicz przewijanie dla UITableView


Mam TableViewController:
Jak widać, na górze mam swój własny bar.
Widok UITable jest po prostu widokiem
statycznym
i dodaję widok u góry UITableView.
Chodzi o to, że kiedy przewijam TableView do góry, wygląda to tak, jak na poniższym obrazku, a tego nie chcę. czy istnieje prosty kod, który mogę ograniczyć przewijanie dla tableView?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

ponieważ UITableView jest podklasą UIScrollView, możesz użyć tej metody UIScrollViewDelegate, aby zapobiec przewijaniu powyżej górnej granicy
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView == self.tableView) {
if (scrollView.contentOffset.y < 0) {
scrollView.contentOffset = CGPointZero;
}
}
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz ustawić właściwość bounce uitableview na NO
UITableView *tableView;
tableView.bounces = NO;

Edycja: uwaga, możesz również usunąć odbicia z interfejsu kreatora
Sprawdź tę odpowiedź, aby uzyskać więcej informacji

wyłącz odbijanie w pionie UITableView podczas przewijania
https://coderoad.ru/2768673/
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Miałem ten sam problem i zapytałem naszego projektanta UX, jak najlepiej to zrobić. Powiedział, że oba surowe rozwiązania (zapobieganie odbijaniu się lub pozwalanie na to tak, jak jest) są złe. Lepiej pozwolić mu się odbić, ale tylko na trochę przestrzeni.
Moje rozwiązanie brzmiało:
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView == self.tableView {
if scrollView.contentOffset.y < -64 {
scrollView.scrollRectToVisible(CGRect(origin: CGPoint(x: 0, y: -64), size: scrollView.frame.size), animated: false)
scrollView.scrollRectToVisible(CGRect(origin: CGPoint.zero, size: scrollView.frame.size), animated: true)
}
}
}

Gdzie
64
to dla mnie „trochę miejsca”. Kod zatrzymuje tableView przy
-64
od góry i animuje go.
Powodzenia!
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz utworzyć obiekt kontrolera widoku typu
UIViewController
, a nie
UITableViewController
. Następnie dodaj panel niestandardowy jako widok podrzędny do
self.view
. Utwórz oddzielny
UITableView
i dodaj go poniżej panelu niestandardowego. Powinno to spowodować, że panel niestandardowy będzie statyczny, a widok tabeli będzie przewijalny.

Aktualizacja

:
Aby widok tabeli był statyczny, musisz ustawić go w ten sposób
tableView.scrollEnabled = NO:

Daj mi znać, jeśli to działa dla Ciebie.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Jeśli dobrze rozumiem, skonfigurowałeś swój niestandardowy panel jako część widoku tabeli. Umieść swój
niestandardowy pasek
w osobnym widoku, a nie w widoku tabeli, i umieść widok tabeli poniżej paska niestandardowego podczas dostosowywania widoków. Musisz utworzyć niestandardowy kontroler widoku, który będzie miał niestandardowy panel i statyczny widok tabeli.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się