Я построил проект, который имеет mapView
(Google Maps), tableView и UIScrollView
. TableView находится внизу, и когда приложение запускается, вы видите действительно небольшую его часть, и большая часть ее находится вне экрана (внизу). Когда пользователь прокручивает, отображается tableView
и поднимается со дна, пока он не охватывает весь экран. Это все работает, но у меня есть одна небольшая проблема: я хочу, чтобы пользователь мог коснуться карты (масштабировать, перемещать и т. Д.), Но UIScrollView
находится поверх карты, и когда пользователь пытается взаимодействовать с картой, scrollView обнаруживает свиток, и карта не получает события касания. Есть ли способ, которым UIScrollView
не обнаружит касание области карты? scrollView
должен охватывать весь экран для обнаружения tableView
(или, может быть, нет, и есть другой способ?), И я не хочу, чтобы карта была подклассом scrollView
, потому что она будет расти вместе с таблицей, когда пользователь прокручивает (Я хочу, чтобы tableView
пошел вверх по карте, а не с ней). Спасибо!Обнаружение касаний под UIScrollView
ответ
Отказ от комментариев. Вам нужно будет установить верхнее пространство для ограничения просмотра в представлении прокрутки. Создайте IBOutlet для ограничения и переменной float для значения ограничения, а также подключите его к вашему верхнему пространству для ограничения супервизора, которое вы создадите в построителе интерфейса в scrollview.
в вашем .h:
IBOutlet NSLayoutConstraint *topSpace;
float topSpaceValue;
Затем обновите это ограничение с помощью этого:
topSpace.constant = topSpaceValue;
Вы можете обнаружить прокрутки в Scrollview с этим методом и установить topSpace ограничение:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
topSpace.constant = topSpaceValue;
}
Теперь фактическая логика определения того, как быстро перемещается прокрутка, и какое значение для набор для topSpaceValue зависит от вас, чтобы понять. Также вам нужно будет определить, в каком направлении перемещается прокрутка, чтобы увеличить или уменьшить значение topSpaceValue.
Это очень похоже на ссылку, что необходимо для определения скорости: iPhone UIScrollView Speed Check
Так в зависимости от скорости, устанавливается ограничение. И вы, вероятно, захотите проверить минимальное значение для ограничения, например 0, поэтому прокрутка не прокручивается в верхней части экрана.
- 1. Обнаружение касаний для слоев в UIScrollView
- 2. Обнаружение касаний для 2 подземелий
- 3. Как получить UIView под UIScrollView для обнаружения касаний?
- 4. UITableViewController и обнаружение касаний
- 5. Обнаружение касаний элементов подуровня
- 6. Обнаружение касаний NSOpenGLView
- 7. Обнаружение постоянных касаний Unity
- 8. Обнаружение касаний на scrollview
- 9. Обнаружение касаний в MPVolumeView
- 10. Обнаружение касаний на MKOverlay
- 11. не получает касаний от UIScrollView
- 12. Обнаружение нескольких касаний сразу (Swift)
- 13. iOS - Обнаружение касаний в UIView?
- 14. Обнаружение касаний на веб-просмотре
- 15. Spritekit/UIBeziers: Обнаружение касаний/nodeAtPoint
- 16. iOS обнаружение нескольких касаний сразу
- 17. UIScrollView не обнаруживает касаний мимо складки
- 18. Обнаружение касания UIButton ниже UIScrollview
- 19. Обнаружение нескольких касаний в Ionic/Android WebView
- 20. iPhone - обнаружение касаний на subview UITableViewCell
- 21. Обнаружение касаний HTML5 в UIWebView на iPhone
- 22. Обнаружение касаний, которые начинались за пределами видимости
- 23. Обнаружение касаний просмотров, нарисованных на SurfaceView
- 24. Обнаружение нижней части UIScrollview
- 25. Обнаружение прокрутки UIScrollView
- 26. Обнаружение прикосновений в uiscrollview
- 27. Обнаружение 'Up' UIGesture в UIScrollView
- 28. Одиночное обнаружение касания в UIScrollView
- 29. Обнаружение длинного крана в UIScrollView
- 30. Обнаружение, которое пользователь uiscrollview касается
Возможно, вам потребуется уточнить, за что это вы. Вы хотите, чтобы tableView находился поверх карты, но не получал никаких прикосновений? – Alex
Как вы делаете что-то, это будет немного сложно. Вы должны сделать запуск scrollview в нижней части карты, затем с помощью автоматического макета и обновления ограничений по высоте, обновите пространство прокрутки в верхней части экрана при прокрутке пользователя. Таким образом, вы сможете прикоснуться к карте, даже если ее отображает только 20 пикселей над списком прокрутки. Также вы должны опубликовать соответствующий код и картинку, чтобы помочь каждому понять, что именно вы пытаетесь сделать. –
@MSU_Bulldog, как я могу обновить ограничения по высоте? Возможно, вы знаете имя функции (ObjC) – Yahllilevy