1

UIScrollView (ボタン クリック アクションからの呼び出し時) は、コンテンツ サイズ ウィンドウの下部からわずか数ピクセル分だけスクロールします。この問題は、特定の関数から呼び出された場合にのみ発生します。

- (void)adjustScrollView {
    SVscrollableLayout.contentSize = CGSizeMake(SVscrollableLayout.frame.size.width, CGRectGetMaxY(bottomSubview.frame));
}

問題のある機能:

- (IBAction)BTNdeleteAction:(id)sender {
    [self clearSubviews];
    //Do some stuff to remove the deleted subview
    [self displaySubviews];

    [self adjustScrollView];
}

- (void)temporarilyClearClasses {
    int numberOfClasses = [self loadNumberOfClasses];
    for (int i=0; i<numberOfClasses; i++) {

        UIButton* TXTclassDisplayTemp = (UIButton*)[self.view viewWithTag:100+i];
        [TXTclassDisplayTemp removeFromSuperview];

        UIButton* BTNdeleteButtonTemp = (UIButton*)[self.view viewWithTag:200+i];
        [BTNdeleteButtonTemp removeFromSuperview];
    }
}  

- (void)printClasses {
    int numberOfClasses = [self loadNumberOfClasses];
    NSArray* classNames = [NSArray arrayWithArray:[self loadClassesArray]];

    int yPlacement = 0;
    if (numberOfClasses != 0) {
    if (noClasses == YES)
    for (int i=0; i<numberOfClasses; i++) {
        UIButton* TXTnewClass = [[UIButton alloc] initWithFrame:CGRectMake(0, 10+(50*i), self.view.frame.size.width, 35)];
        TXTnewClass.tag = 100+i;
        [TXTnewClass addTarget:self
                        action:@selector(TXTclassDisplayAction:)
              forControlEvents:UIControlEventTouchUpInside];
        deleteAllButtonYplacement = CGRectGetMaxY(TXTnewClass.frame)+10 ;

        UIButton* BTNdeleteClass = [UIButton buttonWithType:UIButtonTypeCustom];
        BTNdeleteClass.frame = CGRectMake(10, yPlacement+10+(50*i), 70, 35);
        BTNdeleteClass.tag = 200+i;
        [BTNdeleteClass setTitle:@"Delete" forState:UIControlStateNormal];
        if ([self editingStatus] == OFF)
            BTNdeleteClass.hidden = YES;
        [SVscrollableLayout addSubview:BTNdeleteClass];


            if (CGRectGetMaxY(TXTnewClass.frame) <= SVscrollableLayout.frame.size.height) {
            SVscrollableLayout.contentSize = SVscrollableLayout.frame.size;
            }
            else {
                while (CGRectGetMaxY(TXTnewClass.frame) > SVscrollableLayout.contentSize.height) {
                    SVscrollableLayout.contentSize = CGSizeMake(SVscrollableLayout.frame.size.width, SVscrollableLayout.contentSize.height + 5);
                }
            }
        }
    }
    else {
        TXTnoClasses.hidden = NO;
        BTNeditClassList.enabled = NO;
        BTNeditClassList.alpha = 0.4;
    }

    float centerHorizontal = self.view.frame.size.width / 2;
    float deleteAllButtonXplacement = centerHorizontal - (93/2) - 3;
    NSLog(@"%f", BTNdeleteAll.frame.size.width);
    [self refreshDeleteButton:CGRectMake(deleteAllButtonXplacement, deleteAllButtonYplacement, 93, 44)];

    [self adjustScrollView];

}

4

0 に答える 0