Я использовал UIScrollView
раньше, и теперь использую его, и у меня никогда не было проблемы. Теперь я добавляю его в старое приложение, и, хотя он работает так, как ожидалось (я могу посмотреть содержимое, прокрутить его пальцем, все границы и размеры настроены правильно, поэтому в содержимом нет пустого места и т. Д. .) Я просто не могу получить scrollToRectVisible
для работы. Я даже упрощен вызов, так что он просто перемещается в положение 0,0:UIScrollView работает так, как ожидалось, но scrollRectToVisible: ничего не делает
[scrollView scrollRectToVisible:CGRectMake(0, 0, 10, 10) animated:YES];
или переместить его в 0,200:
[scrollView scrollRectToVisible:CGRectMake(0, 200, 10, 10) animated:YES];
Я даже сделал быстрое приложение, чтобы проверить это, и я могу получите scrollRectToVisible
, чтобы работать там, как я ожидаю. Но в моем старом приложении я не могу заставить его ничего делать.
Я могу сделать свиток прокруткиView с setContentOffset:
, но это не то, что я хочу.
Этот прокруткиПросмотр и его содержимое определены в наконечнике IB и используются с IBOutlet. Единственный код, я использую в мое приложение для обработки Scrollview является
[scrollView setContentSize:CGSizeMake(scrollView.contentSize.width, imageView.frame.size.height)];
(Я заинтересован только в вертикальной прокрутки не горизонтально).
Неужели кто-нибудь сталкивается с такой проблемой?
Я сравнил атрибуты scrollView в обоих приложениях, и они идентичны.
ДОПОЛНЕНИЕ:
Моего scrollViews кадр: 0,000000 0,000000 480,000000 179,000000
Моего scrollViews contentSize является: 0,000000 324,000000
Он по-прежнему действует как прямоугольник, я хочу, чтобы перейти к уже виден и нет требуется прокрутка. Не уверен, что это то, что происходит. Это просто самое страшное. Похоже, такой простой вещи, чтобы решить ...
ADDENDUM # 2:
Это, как я делаю обойтись без scrollRectToVisible
:
CGPoint point = myRect.origin;
if (![clefScrollView pointInside:point withEvent:nil]) {
point.x = 0;
if (point.y > clefScrollView.contentSize.height - clefScrollView.bounds.size.height)
point.y = clefScrollView.contentSize.height - clefScrollView.bounds.size.height;
[clefScrollView setContentOffset:point animated: YES];
}
Все остальное об этом Scrollview работает, как ожидалось, но scrollRectToVisible
. ЗАЧЕМ?!? Какие-то дикие догадки?
Спасибо! Я тоже этим занимался (я устанавливал высоту, но не ширину). –
Это НЕ совсем правильно - c.f. Ответ Ориона ниже (у меня была отличная от нуля ширина/высота, это не «0», что вызывает проблему ...) – Adam
Я сделал это аналогичным образом, но все же scrollRectToVisible не работает. Его работа в симуляторе, но не на устройстве. Пожалуйста помоги. –