0

インターフェイスビルダー内で UIScrollView を作成し、これをすべて正しくリンクしました。scrollV で userInteractionEnabled を設定しようとすると、値が変更されないようです (以下を参照)。

変わらない

何が起こっているのかを確認するために多数の値を出力しましたが、混乱しています。

(lldb) p self.scrollV.userInteractionEnabled
(BOOL) $3 = NO

(lldb) p self.scrollV.contentSize
(CGSize) $4 = (幅=320、高さ=479)

(lldb) p self.scrollV.frame
エラー: プロパティタイプ「UIScrollView *」のオブジェクトに「フレーム」が見つかりませんエラー:式の解析中に1つのエラーが発生しました

フレーム プロパティが表示されないのは奇妙に感じましたが、scrollView を単独で印刷すると、次のようになります。

(lldb) po self.scrollV
(UIScrollView *) $5 = 0x16f7a8d0<UIScrollView: 0x16f7a8d0; frame = (0 60; 320 312); clipsToBounds = YES; autoresize = RM+TM; gestureRecognizers = <NSArray: 0x16fb2630>; layer = <CALayer: 0x16f08860>; contentOffset: {0, 0}>

これは、2 つの UIScrollView が互いに独立して動作していることを暗示しているように思われます。もともと、IBOutlet UIScrollView *scrollV; を使用してインスタンス変数として scrollV を次のように宣言していました。

ただし、これが何らかの理由で問題を引き起こしているかどうかを確認するために、以下も使用してみました。すべての参照を「self.」に変更します。

なぜこれが起こるのかについて誰かアドバイスを提供できますか? 現在、次の関数を使用して scrollV にオブジェクトを追加しています。

- (void)addTitle:(NSString *)title withText:(NSString *)text andPosition:(int *)yPos
{
    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(4, *yPos, 312, 30)];
    [titleLabel setTextColor:kBlueColor];
    [titleLabel setText:[NSString stringWithFormat:@" %@", title]];
    [titleLabel setFont:[UIFont boldSystemFontOfSize:18]];

*yPos += titleLabel.frame.size.height;

// Rounds up the int
int tbHeight = (([text length] + 40 - 1) / 40);

tbHeight = 19 + (19 * tbHeight);

UITextView *textV = [[UITextView alloc] initWithFrame:CGRectMake(4, *yPos, 312, tbHeight)];
[textV setTextColor:kBlueColor];
[textV setFont:[UIFont systemFontOfSize:14]];
[textV setScrollEnabled:NO];
[textV setShowsVerticalScrollIndicator:NO];
[textV setEditable:NO];
[textV setText:text];

*yPos += textV.frame.size.height + 5;

[self.scrollV addSubview:titleLabel];
[self.scrollV addSubview:textV];
}

これが何らかの理由で scrollV に干渉している場合に備えて、コードを追加しました。アプリを実行すると、すべてのビューが表示されるため、scrollV は確実に存在し、IB でうまくリンクされます。

この問題に関するアドバイスは大歓迎です。

ありがとう!

4

2 に答える 2

0

行にブレークポイントがありますself.scrollV.userInteractionEnabled =YES

それを削除してブレークポイントを無効にします

于 2012-11-13T13:42:55.397 に答える
0

さて、私はこれを解決することができました。インターフェイスビルダー内で誤って UIView userInteractionEnabled を NO に設定したようです。これにより、これがすべてのサブビューに適用されるため、scrollView も NO になります。

于 2012-11-13T14:03:23.530 に答える