Ho una vista di scorrimento che usava scorrere quando non aveva pulsanti dappertutto. Ora lo fa, e quando si trascina il mouse (sul simulatore) non succede nulla (penso perché i pulsanti vengono spinti). Come posso fare questo giusto?ScrollView non scorre quando si trascinano i pulsanti
risposta
Questo sta accadendo perché UIButton
subviews del UIScrollView
(presumo che i pulsanti siano aggiunti come sottoview nel tuo caso) stanno tracciando i tocchi e non la vista di scorrimento. UIScrollView
metodo touchesShouldCancelInContentView
è la chiave qui. Secondo la sua descrizione: "Il valore restituito predefinito è SÌ se la vista non è un oggetto UIControl
, altrimenti restituisce NO
.", Ovvero per gli oggetti UIControl
(pulsanti), UIScrollView
non tenta di annullare i tocchi che impediscono lo scorrimento.
Così, per consentire lo scorrimento con tasti:
- Assicurarsi
UIScrollView
proprietàcanCancelContentTouches
è impostato suYES
. - sottoclasse
UIScrollView
e sovrascriveretouchesShouldCancelInContentView
per tornareYES
quando il contenuto oggetto punto di vista è unUIButton
, come questo:
- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
if ([view isKindOfClass:[UIButton class]]) {
return YES;
}
return [super touchesShouldCancelInContentView:view];
}
grazie per la risposta. Ho cambiato lo scroll con le immagini per simulare i pulsanti (e tenere traccia di tocchi per sapere quando chiamare un metodo) Proverò comunque la tua soluzione e vedrò come funziona. Grazie! – DanielaM
@DanielaM Se questa meravigliosa risposta ti ha aiutato come sembra, sarebbe bello accettarlo. – iHunter
** bold ** @Roman K - Sei il mio EROE! Ho passato 2 giorni a leggere in molti post \ forum su questo problema sovrapposto ma nessuna modifica o soluzione ha funzionato davvero. La tua soluzione funziona davvero !! Cheers :-) – Shvalb
ho fondato questa domanda cercando la soluzione rapida per questo problema, ho "tradotto" piace questo:
class UIButtonScrollView: UIScrollView {
override func touchesShouldCancelInContentView(view: UIView!) -> Bool {
if (view.isKindOfClass(UIButton)) {
return true
}
return super.touchesShouldCancelInContentView(view)
}
}
speranza che questo potrebbe aiutare
Swift 3 Soluzione
override func touchesShouldCancel(in view: UIView) -> Bool {
if view is UIButton {
return true
}
return super.touchesShouldCancel(in: view)
}
- 1. dropEffect non funziona quando si trascinano i file su Firefox
- 2. Android ScrollView non scorre quando la tastiera è alzata
- 3. Il selettore in ScrollView non scorre
- 4. Carica più dati quando ScrollView scorre verso il basso
- 5. Come si scorre un GridLayout all'interno di Kivy ScrollView?
- 6. Android: ScrollView non scorre con la tastiera fuori
- 7. Android 5.0 Datepicker in scrollview non funziona (non scorre i mesi)
- 8. Come si può continuare correttamente l'apertura di una ScrollView quando si aggiungono i bambini?
- 9. Frammento non chiama onSaveInstanceState quando si scorre ViewPager?
- 10. ListView "coming back" quando si scorre
- 11. Ipad div contenuto non scorre quando si utilizza come popup
- 12. Disattiva ListView Scorrimento quando si scorre ViewPager
- 13. Quando si utilizza scrollTo ListView non si aggiorna, ma quando lo scorre manualmente si aggiorna
- 14. Jquery nav appiccicoso quando si scorre fino
- 15. jQuery: Rileva quando si scorre l'elemento su
- 16. StaggeredGridLayout scombina quando si scorre fino
- 17. Avvia l'animazione quando si scorre su
- 18. iPhone SDK: UIScrollView non scorre
- 19. due immagini che trascinano
- 20. UIScrollView non scorre (Storyboard)
- 21. iOS 8 AutoLayout scrollview scorre orizzontalmente su iPhone 6 plus
- 22. ScrollView all'interno di ViewPager, scorre automaticamente al centro
- 23. Android ScrollView come mantenere il componente sullo schermo quando scorre verso la parte superiore dello schermo?
- 24. Regolare scrollview quando la tastiera è attiva
- 25. Android ScrollView e pulsanti nella parte inferiore dello schermo
- 26. ScrollView Android scorre automaticamente nella parte inferiore della vista
- 27. I pulsanti si muovono automaticamente sullo schermo
- 28. NSTextView all'interno di un NSScrollView non scorre :(
- 29. Impedire all'app Electron di reindirizzare quando si trascinano elementi nella finestra
- 30. ScrollView non scorre fino alla fine del margine inferiore interno di LinearLayout
Hai provato su un dispositivo fisico, ci sono molte differenze tra i dispositivi e il simulatore, e il mouse e multi-touch è una delle più grandi! –