#iphone #uiscrollview #scroll #geometry
#iPhone #uiscrollview #прокрутка #геометрия
Вопрос:
как я могу определить, когда UIScrollView
рамка пересекается с главным экраном (при прокрутке) в обоих направлениях вверх и вниз? я пытался сделать это следующим образом :
- (void)detectScreenBoundsIntersect{
if (CGRectIntersectsRect([myScrollView frame], [[UIScreen mainScreen] bounds])) {
NSLog(@"COLLISION");
}
}
Но, похоже, это не работает! Спасибо.
Комментарии:
1.
UIScrollView
объект не перемещается во время прокрутки. Вы хотите знать, достигло ли содержимое границ?
Ответ №1:
Примите UIScrollViewDelegate
протокол в контроллере просмотра и задайте делегирование вида прокрутки контроллеру. Примите scrollViewDidScroll:
метод.
- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
if ( [self hasReachedAVerticalEdge] ) {
NSLog(@"At World's End");
}
}
- (BOOL) hasReachedAVerticalEdge {
CGPoint offset = myScrollView.contentOffSet;
CGSize contentSize = myScrollView.contentSize;
CGFloat height = myScrollView.frame.size.height;
CGFloat width = myScrollView.frame.size.width;
if ( offset.y == 0 ||
(offset.y height) == contentSize.height ) {
return YES;
}
return NO;
}
Это то, что вы ищете?
Проверяет, попадает ли изображение в видимую часть прокрутки.
- (BOOL)isContentFrameVisible:(CGRect)aFrame {
CGRect visibleRect = CGRectZero;
visibleRect.origin = myScrollView.offset;
visibleRect.size = myScrollView.frame.size;
if ( CGRectIntersectsRect(visibleRect, aFrame) ) {
return YES;
}
}
Комментарии:
1. Спасибо за ответ, но, похоже, в моем случае это не работает!!
2. Тогда я не получил то, что вы искали. Не могли бы вы немного объяснить это.
3. я вызываю этот метод внутри метода:
-(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
простымNSLog
вызовом, чтобы я мог видеть, и я получил журнал до того, как scrollview достигнет края экрана.4. ViewController моего представления, который содержит этот scrollview
5. Этот метод, вероятно, не вызывается.
UIScrollView
объект узурпирует касания. Я обновлю свой ответ альтернативным подходом.