Необходимость доступа к полосе прокрутки Рамка Uitablebiew - iOS 8

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

https://github.com/honkmaster/TimeScroller

Из iOS 8, похоже, много изменений в доступе к кадру Scrollbar из UitableView.

- (void)captureTableViewAndScrollBar
{

_tableView = [self.delegate tableViewForTimeScroller:self];
self.frame = CGRectMake(CGRectGetWidth(self.frame) - 10.0f, 0.0f, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame));

for (UIView *subview in [_tableView subviews]){
 if ([subview isKindOfClass:[UIImageView class]] && subview.tag == 0){
 NSLog(@"check this SubViews %@ and its Tag %ld",subview , (long)subview.tag);
 UIImageView *imageView = (UIImageView *)subview;
 if (imageView.frame.size.width == 7.0f || imageView.frame.size.width == 5.0f || imageView.frame.size.width == 3.5f
 || imageView.frame.size.height == 2.5f){
 imageView.clipsToBounds = NO;
 [imageView addSubview:self];
 _scrollBar = imageView;
 _saved_tableview_size = _tableView.frame.size;
 break;
 }
 }
}
}

Выше - блок кода для определения ScrollBar Frame of Tableview

Основываясь на приведенном выше прямоугольнике, мы формируем прямоугольник для просмотра и добавляем соответствующий TableviewCell по нижнему коду

CGRect selfFrame = self.frame;
CGRect scrollBarFrame = _scrollBar.frame;

NSLog(@"Check this %@",_scrollBar);
self.frame = CGRectMake(CGRectGetWidth(selfFrame) * -1.0f,
 (CGRectGetHeight(scrollBarFrame) / 2.0f) - (CGRectGetHeight(selfFrame) / 2.0f),
 CGRectGetWidth(selfFrame),
 CGRectGetHeight(_backgroundView.frame));

CGPoint point = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
point = [_scrollBar convertPoint:point toView:_tableView];
UIView *view = [_tableView hitTest:point withEvent:nil];

Проблема: ScrollBar-кадр Y, похоже, не меняется, поскольку пользователь прокручивает таблицуView, и поэтому hitTest не находит TableViewCell

Пожалуйста, найдите образец ScrollBar фрейма TableView> и его тег 0

Мне нужна помощь в том, как сделать то же самое в версии iOS 8.1

1 ответ

Проблема решается путем изменения вышеуказанного метода, как указано ниже в той же библиотеке

- (void)captureTableViewAndScrollBar
{
 _tableView = [self.delegate tableViewForTimeScroller:self];

 self.frame = CGRectMake(CGRectGetWidth(self.frame) - 10.0f, 0.0f, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame));

 for (UIView *subview in [_tableView subviews]){
 if ([subview isKindOfClass:[UIImageView class]]){
 UIImageView *imageView = (UIImageView *)subview;
 if (imageView.frame.size.width == 7.0f || imageView.frame.size.width == 5.0f || imageView.frame.size.width == 3.5f
 || imageView.frame.size.width == 2.5f || (imageView.width < 2.5f && imageView.width > 2.3 && [[AppUtils deviceModelName] isEqualToString:kIPHONE6PLUS])){
 imageView.clipsToBounds = NO;
 [imageView addSubview:self];
 _scrollBar = imageView;
 _saved_tableview_size = _tableView.frame.size;
 break;
 }
 }
 }
}

licensed under cc by-sa 3.0 with attribution.