У меня есть вид прокрутки, который использовался для прокрутки, когда на нем не было кнопок. Теперь это происходит, и при перетаскивании мыши (на симуляторе) ничего не происходит (я думаю, потому что кнопки толкаются). Как я могу сделать это правильно?ScrollView не прокручивается при перетаскивании кнопок
ответ
Это происходит из-за того, что UIButton
подпункты UIScrollView
(я предполагаю, что кнопки добавлены в виде подзонов в вашем случае) отслеживают штрихи, а не прокрутку. UIScrollView
метод touchesShouldCancelInContentView
является ключевым здесь. Согласно его описанию: «Возвращаемое по умолчанию значение равно YES, если view не является объектом UIControl
, в противном случае он возвращает NO
.», То есть для UIControl
объектов (кнопок), UIScrollView
не пытается отменить касания, которые предотвращают прокрутку.
Так, чтобы прокрутка с помощью кнопок:
- Убедитесь
UIScrollView
свойствоcanCancelContentTouches
устанавливается вYES
. - Подкласс
UIScrollView
и переопределитьtouchesShouldCancelInContentView
вернутьYES
, когда содержание объекта зрения являетсяUIButton
, как это:
- (BOOL)touchesShouldCancelInContentView:(UIView *)view
{
if ([view isKindOfClass:[UIButton class]]) {
return YES;
}
return [super touchesShouldCancelInContentView:view];
}
Благодарю вас за ответ. Я изменил прокрутку с изображениями для имитации кнопок (и отслеживания касаний, чтобы знать, когда вызывать метод). Я попробую ваше решение и посмотрю, как это работает. благодаря! – DanielaM
@ DanielaM Если этот чудесный ответ помог вам, как это действительно кажется, было бы хорошо принять его. – iHunter
** смелый ** @Roman K - Ты мой герой! Я провел 2 дня, прочитав во многих сообщениях \ форумах об этой проблеме перекрытия, но никакая настройка или решение действительно не работали. Ваше решение действительно работает! Приветствия :-) – Shvalb
Я основал этот вопрос в поисках скорейшего решения этой проблемы, я «перевел» ее как это:
class UIButtonScrollView: UIScrollView {
override func touchesShouldCancelInContentView(view: UIView!) -> Bool {
if (view.isKindOfClass(UIButton)) {
return true
}
return super.touchesShouldCancelInContentView(view)
}
}
надеюсь, что это может помочь
Swift 3 Решение
override func touchesShouldCancel(in view: UIView) -> Bool {
if view is UIButton {
return true
}
return super.touchesShouldCancel(in: view)
}
- 1. ScrollView прокручивается при вводе
- 2. jScrollPane прокручивается при перетаскивании списка
- 3. ScrollView не прокручивается?
- 4. scrollview не прокручивается в iphone
- 5. UIViewController с Scrollview не прокручивается
- 6. ScrollView не прокручивается
- 7. ScrollView полностью не прокручивается
- 8. Scrollview полностью не прокручивается
- 9. Scrollview, который не прокручивается
- 10. ScrollView не прокручивается?
- 11. ScrollView не прокручивается вообще
- 12. ScrollView не плавно прокручивается
- 13. Android: ScrollView не прокручивается
- 14. Мой scrollView не прокручивается?
- 15. Android ScrollView не прокручивается
- 16. ScrollView не прокручивается при открытой мягкой клавиатуре
- 17. Android scrollview внутри другого scrollview не прокручивается
- 18. ModalViewController не отображается во время анимации при прокрутке scrollView прокручивается
- 19. Listview не прокручивается внутри scrollview
- 20. ScrollView внутри фрагмента не прокручивается
- 21. ScrollView не прокручивается в конец
- 22. iOS 7 ScrollView не прокручивается
- 23. Android: Scrollview больше не прокручивается
- 24. RelativeLayout внутри scrollview не прокручивается
- 25. Android ScrollView не прокручивается вообще
- 26. Datepicker не прокручивается в scrollview
- 27. iOS Scrollview не прокручивается полностью?
- 28. scrollview внутри фрагмента не прокручивается
- 29. ScrollView, содержащий TextView, не прокручивается
- 30. ScrollView не прокручивается до конца.
Пробовали ли вы это на физическом устройстве, есть несколько отличий между устройствами и симулятором, а мышь и мультитач - одна из самых больших! –