Необходимость доступа к полосе прокрутки Рамка 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.