Как всегда виден скроллер Tableview в Obj c? - PullRequest
9 голосов
/ 05 августа 2010

Я хочу показать пользователю, что ниже есть больше контента, но UITableView показывает индикатор прокрутки только тогда, когда мы прокручиваем просмотр таблицы. Есть какой-то способ, поэтому я могу показывать индикатор прокрутки всегда

Ответы [ 6 ]

6 голосов
/ 30 сентября 2011
-(void)viewDidAppear:(BOOL)animated{

 timer = [NSTimer scheduledTimerWithTimeInterval:0.8 target:self selector:@selector(indicator:) userInfo:nil repeats:YES];

}

-(void)viewDidDisappear:(BOOL)animated{
       [timer invalidate];
}

-(void)indicator:(BOOL)animated{
      [tableViewer flashScrollIndicators];
    NSLog(@"asda");
}

Просто мигните полосой прокрутки

3 голосов
/ 15 февраля 2011

Я сделал это :) Я программирую в MonoDevelop, поэтому я описываю только метод:

Вы должны создать свой собственный класс UITableView.Там вы перегружаете PerformSelector и НЕ вызываете ее базовую функцию, а вызываете flashScrollIndicators, если имя селектора _notifyPopOverStoppedScrolling.

Функция перегрузки ReloadData и там также вызывается flashScrollIndicators.Только при увеличении он исчезнет, ​​но вы также можете вызвать flashScrollIndicators при увеличении.

3 голосов
/ 05 августа 2010

Нет способа (о котором я знаю) постоянно отображать полосы прокрутки.Вы можете

[tableView flashScrollIndicators]

в -viewDidAppear:, чтобы кратко отобразить полосы прокрутки при отображении представления.

Кроме того, если у вас много записей, вы можете рассмотреть возможность показа (буквенного) индекса раздела справа.Для этого определите -sectionIndexTitlesForTableView в вашем UITableViewDataSource.Используя tableView.sectionIndexMinimumDisplayRowCount, вы можете определить минимальное количество записей для отображения раздела Индекс.

2 голосов
/ 03 февраля 2015

Я получил решение по этому вопросу.
Реализация UIImageView

@implementation UIImageView (UIScrollView)
    - (void) setAlpha:(float)alpha {

        if (self.superview.tag == noDisableVerticalScrollTag) {
            if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleLeftMargin) {
                if (self.frame.size.width <10 && self.frame.size.height > self.frame.size.width) {
                    UIScrollView *sc = (UIScrollView*)self.superview;
                    if (sc.frame.size.height < sc.contentSize.height) {
                        return;
                    }
                }
            }
        }

        if (self.superview.tag == noDisableHorizontalScrollTag) {
            if (alpha == 0 && self.autoresizingMask == UIViewAutoresizingFlexibleTopMargin) {
                if (self.frame.size.height <10 && self.frame.size.height < self.frame.size.width) {
                    UIScrollView *sc = (UIScrollView*)self.superview;
                    if (sc.frame.size.width < sc.contentSize.width) {
                        return;
                    }
                }
            }
        }

        [super setAlpha:alpha];
    }
    @end

и установка тега Tableview или Scrollview как

#define noDisableVerticalScrollTag 97240626 //for visible only vertical scrollIndicator.
#define noDisableHorizontalScrollTag 9898460 // for visible only Horizontal scrolling.

и для Tableview [tableView flashScrollIndicators]; и scrollview [[scrollobj flashScrollIndicators]]; Спасибо.

2 голосов
/ 20 мая 2013
- (void)viewWillAppear:(BOOL)animated
{
    [self.tableView flashScrollIndicators];
}

Это может помочь вам в решении вашей проблемы

1 голос
/ 14 июля 2017

Вот кусок кода у меня работает, добавьте этот код в viewDidAppear

DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
      self.tableView_service.flashScrollIndicators()
    }

Happy Coding ? !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...