Czy istnieje sposób dezaktywacji spowalniania UIScrollView?Dezaktywuj UIScrollView zwalniając czasowo:
Chcę umożliwić użytkownikowi przewijanie płótna, ale nie chcę, aby płótno nadal przewijało się po podniesieniu palca przez użytkownika.
Czy istnieje sposób dezaktywacji spowalniania UIScrollView?Dezaktywuj UIScrollView zwalniając czasowo:
Chcę umożliwić użytkownikowi przewijanie płótna, ale nie chcę, aby płótno nadal przewijało się po podniesieniu palca przez użytkownika.
Można to zrobić, korzystając z metody delegowania UIScrollView
scrollViewWillBeginDecelerating
, aby automatycznie ustawić przesunięcie zawartości na bieżącą pozycję ekranu.
Aby wdrożyć:
UIScrollView
, jeśli nie zostało to zrobione.W .m
pliku wdrażania swojego delegata, należy dodać następujące wiersze kodu:
-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
[scrollView setContentOffset:scrollView.contentOffset animated:YES];
}
Voila! Nigdy więcej automatycznego przewijania.
Nice. Nie mam pojęcia dlaczego, ale działa. Dziękuję Ci! –
Kopalnia skacze do miejsca, w którym spowolnienie zakończyłoby się z powrotem do miejsca, w którym się zaczęło ... Jakieś sugestie? – jjxtra
Działa poprawnie ... –
Możesz po prostu zwiększyć szybkość zwalniania bardzo wysoko. Z nieskończoną szybkością, natychmiast się zatrzyma. Spróbuj ustawić stopę do tych stałych:
scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;
i
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
Jeśli szybko wciąż nie jest wystarczająco szybka, UIScrollViewDecelerationRateFast właśnie typedef'ed jako pływaka, więc można po prostu pomnożyć przez współczynnik 10 lub więcej, aby przyspieszyć jeszcze bardziej.
Dziękuję za odpowiedź! Próbowałem różnych wartości dla właściwości decelerationRate, ale nie udało się sprawić, by spowolnienie pojawiło się nieistniejąco. Szybkie przesuwanie powoduje, że przewijanie przewija znaczną ilość. –
Z mojego doświadczenia wynika, że właściwość 'decelerationRate' odpowiada tylko wartościom wyjaśnionym w dokumentacji:' UIScrollViewDecelerationRateNormal' oraz 'UIScrollViewDecelerationRateFast'. –
Tego właśnie szukałem. Dzięki :) – codeburn
W systemie iOS 5.0 lub nowszym istnieje lepsza metoda niż wywołanie setContentOffset:animated:
.
Wdrożenie metody delegata scrollViewWillEndDragging:withVelocity:targetContentOffset:
w pliku .m
:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView
withVelocity:(CGPoint)velocity
targetContentOffset:(inout CGPoint *)targetContentOffset {
*targetContentOffset = scrollView.contentOffset;
}
Przypisywanie prąd przesunięcia do targetContentOffset
zatrzymuje UIScrollView
z automatycznym przewijaniem.
Dlaczego miałbyś to zrobić? –
Adam, Jestem świadomy, że zmiana domyślnego zachowania nie jest zalecana, ale myślę, że w moim szczególnym przypadku miałoby to sens. Wdrażam rozszerzone płótno z możliwością edycji obiektów bezpośrednio na płótnie. Wchodząc w ten tryb "na płótnie-edycję" chciałbym ograniczyć odległość, którą użytkownik przewija, aby obiekt był zawsze widoczny w widocznym zakresie. Wykorzystanie może przewijać dalej, ale podskoczyłby z powrotem na palec. Jestem świadomy właściwości contentSize, ale zakłóca to moje rosnące płótno. –
W mojej sytuacji płaciliśmy za pracę najemną, a klient zażądał usunięcia ruchu opóźniającego. – Mark