UITableView, UIWebViews и свойство scrollsToTop = Проблема - PullRequest
6 голосов
/ 23 апреля 2010

Мое приложение имеет UITableView.Этот UITableView имеет представление заголовка, которое имеет вид UIWebView.

. По умолчанию представления прокрутки имеют свойство scrollsToTop, установленное на YES, что позволяет пользователю нажимать на строку состояния для прокрутки кверхняя часть представления прокрутки.

Если в одно представление встроены два вида прокрутки, для каждого из которых свойство scrollsToTop установлено на YES, то касание строки состояния ничего не делает.

Решение состоит в том, чтобы установить одно из свойств scrollsToTop на NO.Это снова позволяет постукивать по строке состояния.

Теперь вот проблема: UIWebView не предоставляет свое представление прокрутки, и в результате нет доступа к его свойству scrollsToTop.Я хочу, чтобы табличное представление прокручивалось до самого верха при нажатии строки состояния, а не веб-представление.

Кто-нибудь знает, как мне этого добиться?

Ответы [ 4 ]

3 голосов
/ 23 апреля 2010

Этот вопрос содержит ответ:

iPhone OS: коснитесь строки состояния, чтобы прокрутить вверх не работает после удаления / добавления назад

Я не мог найти его ранее, так как его спросили по-другому и немного по другой теме, но результат тот же.

Таким образом, результатом было пройти через подпредставления, пока вы не найдете представление прокрутки. Я делал это раньше в других приложениях и не думал об этом в этом случае. Это должен быть App-Store-Safe, так как в магазине есть приложения, использующие эту идею.

Категория в UIWebView для включения или отключения прокрутки вверх:

@implementation UIWebView (UIWebViewScrollToTopAdditions)

- (void)setScrollsToTop:(BOOL)scrollsToTop
{
    if ([[self subviews] count] > 0)
    {
        UIScrollView *scrollView = (UIScrollView *)[[self subviews] objectAtIndex:0];
        if ([scrollView respondsToSelector:@selector(setScrollsToTop:)])
        {
            [scrollView setScrollsToTop:scrollsToTop];
        }
    }
}

@end
3 голосов
/ 09 октября 2012

Теперь есть свойство scrollView, которое является предпочтительным:

myWebView.scrollView.scrollsToTop = YES;
2 голосов
/ 01 октября 2013

Это часто происходит, потому что у всех скроллвью есть значение по умолчанию. Когда создаются новые прокрутки или веб-просмотры, для них scrollsToTop устанавливается на YES. Я написал простую категорию для этой конкретной проблемы:

-[UIScrollView makeOnlyThisScrollViewScrollToTopOnStatusBarTap];

https://gist.github.com/hfossli/6776203

Он в основном устанавливает scrollsToTop на NO на всех других scrollViews, кроме того, который вы указали +, заботясь о значении по умолчанию. Удачи!

0 голосов
/ 23 апреля 2010

Вы пробовали метод делегата из UIScrollViewDelegate scrollViewShouldScrollToTop ?

...