0

カスタム ビューを動的に追加していますが、この例外が発生します

例外: ; シンボル スタブ: getpid

ITMCustomView *cView = [[ITMCustomView alloc] initWithFrame:CGRectMake(187, 660, 400, 400)
                                                      andOrderedItem:@"dd"
                                                              andTag:self.tagNumber
                                                       withFoldArray:self.foldTypeArray
                                                       withRollArray:self.rollTypeArray];

    cView.delegate = self;
        //set properties of cView...like cView.txtName.text =@"John";

    //self.scrollView.contentSize = CGRectMake(187, 660, 400, 400).size;


    /*CGPoint scrollPoint = CGPointMake(0.0, (cView.frame.origin.y/800)*400);
    [self.scrollView setContentOffset:scrollPoint animated:YES];

    [self.scrollView addSubview:cView];

    CGFloat scrollViewHeight = 0.0f;
    for (UIView *view in self.scrollView.subviews)
    {
        scrollViewHeight += view.frame.size.height;
    }

    CGSize newSize = CGSizeMake(320,scrollViewHeight);
    //CGRect newFrame = (CGRect){CGPointZero,newSize};
    [self.scrollView setContentSize:newSize];
    NSLog(@"750 the tag number is %d",self.tagNumber);
    NSLog(@"the scroll view height is %f",scrollViewHeight);
    self.currentCGRectLocation = cView.frame;*/

/* */ でコメントした上記のコードがたくさんあります。その前にも1行あります

//self.scrollView.contentSize = CGRectMake(187, 660, 400, 400).size;

上記の行のコメントを外すと、例外が発生し始めます。アプリケーションの別の時点で、このコードにたどり着きました。アプリを最初に起動すると、このコードが呼び出され、正常に動作します。ここで、この画面 A にレコードを保存し、他の計算を行い (基本的には別の画面 B に移動します)、この画面に戻り、保存されたレコードを取得して表示し、画面 A に表示します。この例外を取得します。私が気づいたのは、スクロールビューで行うことはすべて例外です。この行を省略した場合

[self.scrollView addSubview:cView];

コメントの外側では、カスタム ビューが完全に正常に追加されていることがわかります。しかし、スクロールが緩んでいます。ありがとう..

編集:これに変更..まだ動作しません。

        ITMCustomView *cView = [[ITMCustomView alloc] initWithFrame:CGRectMake(187, 660, 400, 400)
                                                      andOrderedItem:@"New"
                                                              andTag:self.tagNumber
                                                       withFoldArray:self.foldTypeArray
                                                       withRollArray:self.rollTypeArray];

    cView.tag =self.tagNumber;
    NSLog(@"Assigned tag is %d",cView.tag);
    cView.delegate = self;

    CGPoint scrollPoint = CGPointMake(0.0, (cView.frame.origin.y/500)*400);
    [self.scrollView setContentOffset:scrollPoint animated:YES];

    [self.scrollView addSubview:cView];

    CGFloat scrollViewHeight = 0.0f;
    for (UIView *view in self.scrollView.subviews)
    {
        scrollViewHeight += view.frame.size.height;
    }

    CGSize newSize = CGSizeMake(320,scrollViewHeight);
    //CGRect newFrame = (CGRect){CGPointZero,newSize};
    [self.scrollView setContentSize:newSize];
    NSLog(@"the scroll view height is %f",scrollViewHeight);
    self.currentCGRectLocation = cView.frame;

  for (NSObject *newObj in cView.subviews)
    {
        if ([newObj isMemberOfClass:[UITextField class]])
        {
            UITextField *txtObj = (UITextField *)newObj;
            switch (txtObj.tag) {
                case 6: //Length
                    NSLog(@"6 item value is %@",txtObj.text);
                    txtObj.text = [soliI.length stringValue]; //[NSString stringWithFormat:@"%1.1f",length];
                    break;
                case 7: //Width
                    NSLog(@"7 item value is %@",txtObj.text);
                    txtObj.text = [soliI.width stringValue]; //[NSString stringWithFormat:@"%1.1f",width];
                    break;

                default:
                    break;
            }
        }
        else if ([newObj isMemberOfClass:[UITextView class]])
        {
            UITextView *txtView = (UITextView *)newObj;
            NSLog(@"the tag is %d",txtView.tag);
            if (txtView.tag == 17)
            {
                txtView.text = soliI.specialInstructions;
            }
        }
        else if ([newObj isKindOfClass:[UIButton class]])
        {
            UIButton *btn = (UIButton *)newObj;
            NSLog(@"btn tag is %d",btn.tag);
            switch (btn.tag) {
                case 12:
                    [btn setTitle:@"Fold" forState:UIControlStateNormal];
                    break;
                case 13:
                    [btn setTitle:@"Roll" forState:UIControlStateNormal];
                    break;
                default:
                    break;
            }
}
4

1 に答える 1

0

あなたのコードについてはよくわかりませんが、実際に何が起こっているのかわかりません.しかし、問題は、ScrollViewのcontentSizeが2つのパラメータ、つまり高さと幅を取ることです。使用したCGRectMakeとは異なり、CGSizeの性質であるためスクロールします。

これを確認してください。問題が解決される可能性があります。

于 2012-12-22T04:31:48.997 に答える