Мой UIScrollView (содержащий некоторые UIControls) больше не прокручивается в iOS 8

В моем приложении я сделал календарь, который в основном состоит из UIScrollView, содержащего несколько ячеек (пользовательский UIControl) для каждого дня, верхний заголовок, содержащий некоторые метки (Mon, Tue, Wed...) и, очевидно, некоторые разделители (UIView 1px толщина).

На iOS 7 все работало нормально, я смог выделить ячейки, нажав их (я использую событие UIControlEventTouchUpInside, чтобы выделить их), и перетащить просмотр с прокруткой для отображения предыдущего или следующего месяца.

Но так как я перешел на iOS 8 и скачал Xcode 6, он больше не работает. На самом деле я все еще могу выбрать ячейки, но представление прокрутки не прокручивается (за исключением случаев, когда я перетаскиваю его из заголовка или разделителя, которые являются базовым UIView без какого-либо управления событиями касания).

Или я начинаю перетаскивать вид прокрутки из ячейки, он просто остается фиксированным.

Я ничего не изменил, поэтому я не понимаю, почему это больше не работает...

Пожалуйста, помогите мне!!:)

большое спасибо

PS: я француз, извините за мой плохой английский

1 ответ

Решение

РЕДАКТИРОВАТЬ: с iOS 8.1 поведение кажется похожим на поведение до iOS 8.0, поэтому Apple, возможно, "исправила" его. Так что ответ ниже не нужен больше.


Насколько я вижу, в iOS 8 произошли изменения, которые влияют на обработку UIScrollview. UIScrollView больше не отслеживает касания содержимого в случае UIControl.

Одна вещь, которую я сделал, это создать подкласс UIScrollView и перезаписать touchesShouldCancelInContentView

- (BOOL) touchesShouldCancelInContentView:(UIView *)view {
    return YES;
}

Смотрите также https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScrollView_Class/index.html

Возвращаемое значение: ДА, чтобы отменить дальнейшие сенсорные сообщения для просмотра, НЕТ, чтобы просмотр продолжал получать эти сообщения. Возвращаемое значение по умолчанию - YES, если view не является объектом UIControl; в противном случае возвращается NO.

Другие вопросы по тегам