代码之家  ›  专栏  ›  技术社区  ›  OgreSwamp

UIScrollView不滚动

  •  1
  • OgreSwamp  · 技术社区  · 14 年前

    我对UIScrollView有问题。 我的程序是这样的:

    这是MainMenuViewController方法的一部分 viewDidLoad

    ScrollBarController *imgScrollBarCtrl = [[ScrollBarController alloc] init];
    // set images folder
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *imagesFolder = [documentsDirectory stringByAppendingPathComponent:@"SavedImages"];
    
    // set scroll bar frame size
    imgScrollBarCtrl.view.frame = CGRectMake(0.0, 0.0, 1024.0, 128.0);
    [imgScrollBarCtrl setImagesFolder:imagesFolder];
    
    // method adds subviews UIImageView to the scroll bar 
    // and set view's contentSize according thumbnails number
    [imgScrollBarCtrl recalculateThumbnailsBounds];
    
    [topPanel addSubview:imgScrollBarCtrl.view];
    [imgScrollBarCtrl release];
    

    有方法 loadView

    - (void)loadView {
    
        UIScrollView *aScrollView = [[UIScrollView alloc] init];
    
        aScrollView.scrollEnabled = YES;
    
        self.view = aScrollView;
    
        [aScrollView release];
    }
    

    我将滚动视图的contentSize设置为 recalculateThumbnailsBounds 滚动条控制器。设置正确(1620.0、128.0),但滚动不起作用。 ((UIScrollView *)imgScrollBarCtrl.view).contentSize(2000.0, 128.0); 但效果不太好。

    我愿意 NSLog(...) 在控制台上设置contentSize和print frame size以及contentSize之后-它们设置正确freme.尺寸=1028.0128.0,内容大小=1620.0128.0。

    我查过方法了 - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 在两个控制器中-MainMenuController和ScrollBarController。只有主控制器触发此方法。ScrollBarController从不接收事件。。。也许这是个问题。。。

    有没有人知道会出什么问题?干杯!

    1 回复  |  直到 14 年前
        1
  •  -1
  •   Pier-Olivier Thibault    14 年前
    [[UIScrollView alloc] initWithFrame:(CGRect)frame]
    

    所有UIView子代都在使用该方案。

    另外,您的代码片段并不清楚您要实现什么,因此您的代码中可能存在其他问题。

    您应该首先尝试在-(void)loadView方法中设置contentSize,看看是否获得了正确的行为。