Вы могли попробовать powershell. Существуют получать-содержание и содержание набора сборка commandlets, в которой Вы могли использовать.
UIScrollView
с включенным разбиением на страницы будет останавливаться при кратной ширине (или высоте) его кадра. Итак, первый шаг - выяснить, какой ширины вы хотите, чтобы ваши страницы были. Установите ширину UIScrollView
. Затем установите размеры вашего вложенного представления, какими бы большими они вам ни были, и установите их центры на основе кратной ширины UIScrollView
.
Затем, поскольку вы хотите видеть другие страницы, конечно установите clipsToBounds
на NO
, как указано в mhjoy. Уловка теперь заключается в том, чтобы заставить его прокручиваться, когда пользователь начинает перетаскивание за пределы диапазона кадра UIScrollView
. Мое решение (когда мне приходилось делать это совсем недавно) было следующим:
Создать подкласс UIView
(т.е. ClipView
), который будет содержать UIScrollView
и его подвиды. По сути, он должен иметь структуру того, что, как вы могли бы предположить, иметь UIScrollView
при нормальных обстоятельствах. Поместите UIScrollView
в центр ClipView
. Убедитесь, что для clipsToBounds
ClipView
установлено значение ДА
, если его ширина меньше, чем ширина его родительского представления. Кроме того, ClipView
нуждается в ссылке на UIScrollView
.
Последний шаг - переопределить - (UIView *) hitTest: withEvent:
внутри ClipView
.
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return [self pointInside:point withEvent:event] ? scrollView : nil;
}
Это в основном расширяет сенсорную область UIScrollView
до рамки его родительского представления, что вам и нужно.
Другой вариант - создать подкласс UIScrollView
и переопределить его - (BOOL) pointInside: (CGPoint) point withEvent: (UIEvent *) event
, однако вам все равно понадобится вид контейнера для отсечения, и может быть трудно определить, когда вернуть ДА
, основываясь только на кадре UIScrollView
.
ПРИМЕЧАНИЕ: Вам также следует взгляните на hitTest: withEvent: модификация Юри Пакасте, если у вас возникли проблемы с взаимодействием с пользователем в подпредставлении.
Вышеупомянутое решение ClipView
сработало для меня, но мне пришлось использовать другую реализацию - [UIView hitTest: withEvent:]
. В версии Эда Марти не было взаимодействия с пользователем, работающего с вертикальными прокрутками, которые у меня есть внутри горизонтального.
У меня сработала следующая версия:
-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event
{
UIView* child = nil;
if ((child = [super hitTest:point withEvent:event]) == self)
return self.scrollView;
return child;
}