0

スクロールビューに追加したボタンに奇妙な動作があります。

    for (UIView *subview in self.scrollView.subviews) {
        [subview removeFromSuperview];
    }
    //Create and place info Button(s)
    for (int i = 0; i < BigPictures.count; i++) {
        UIButton *infoButton = [[UIButton alloc] initWithFrame:CGRectMake(scrollView.frame.size.width*(i+1) - 29 - 5 - 10, scrollView.frame.size.height - 29 - 5, 29, 29)];
        [infoButton addTarget:self action:@selector(flip) forControlEvents:(UIControlEvents)UIControlEventTouchUpInside];
        //[infoButton setEnabled:YES];
        //[infoButton setUserInteractionEnabled:YES];

        [self.scrollView addSubview:[FrontViews objectAtIndex:i]];
        [infoButton setBackgroundImage:[UIImage imageNamed:@"btn_image-info.png"] forState:UIControlStateNormal];
        [scrollView addSubview:infoButton];

BigPictures には、スクロールビューに表示したいすべての画像が含まれています。さて、奇妙なことに。BigPictures に 1 つの画像が含まれている場合、アクション (フリップ) が呼び出されます。[BigPictures count] > 1 になるとすぐに、最初の画像のボタンはアクションを実行しませんが、他のすべてのボタン (ページ 2-n) は実行されます。では、これはどうしてでしょうか??

変更for (int i = 0; i < BigPictures.count; i++)してfor (int i = 0; i < 1; i++)もボタンは機能しています。

それで、私は何が欠けていますか?すでに次のようなことを試しました

scrollView.delaysContentTouches = NO;
scrollView.canCancelContentTouches = NO;

ただし、後者はスクロールビューのスクロールを無効にします。

編集:他のボタンを別の位置に配置しようとしましたが、最初のページでは機能しません(ページ> 1の場合)。また、GestureRecognizer を配置しようとしました。これは機能しますがif ([touch.view isKindOfClass:[UIButton class]])、下のボタンを検出していません。スクロールビューの他のページではすべて正常に動作します。本当に奇妙です。

4

1 に答える 1

0

完全な再構築を行い、現在は機能しています。まったく同じコードを使用したため、本当に奇妙です。

于 2013-01-28T14:07:55.140 に答える