1

多くの画像ボタンを使用してスクロールビューを実行しました。ボタン1〜8の場合、ボタンの動作に問題はありません。クリック可能なログにすることができます。

問題は、2ページ目のボタンがセレクターでリッスンしていないように見えることです(ボタン9-10)。ページコントロールから問題が発生する可能性がありますか?または私はここで何かを逃しましたか?

    // button paging
myImages = [NSArray arrayWithObjects:
                     [UIImage imageNamed:@"img_1.png"],
                     [UIImage imageNamed:@"img_2png"],
                     [UIImage imageNamed:@"img_3.png"],
                     [UIImage imageNamed:@"img_4.png"],
                     [UIImage imageNamed:@"img_5.png"],
                     [UIImage imageNamed:@"img_6.png"],
                     [UIImage imageNamed:@"img_7.png"],
                     [UIImage imageNamed:@"img_8.png"],
                     [UIImage imageNamed:@"img_9.png"],
                     [UIImage imageNamed:@"img_10.png"],
                     nil
            ];

// prepare counter
int posX, posY = 5, counter = 0, pages = 0;
BOOL reset = NO;

// uiviewscroller
CGRect scrollFrame;
scrollFrame.origin.x = self.myScrollView.frame.size.width * pages;
scrollFrame.origin.y = 0;
scrollFrame.size = self.myScrollView.frame.size;

UIView *subView = [[UIView alloc] initWithFrame:scrollFrame];
subView.backgroundColor = [UIColor colorWithRed:232.0f/255.0f green:233.0f/255.0f blue:235.0f/255.0f alpha: 1];

// loop over images
for (int i = 0; i < myImages.count; i++)
{
    counter++;

    // reposition X
    if (counter == 1 || counter == 5)
    {
        posX = 4;

        // more than 1 page
        if (pages > 0)
            posX = 320 * pages;
    }
    else
    {
        posX += 80;
    }

    // reposition Y
    posY = (counter <= 4) ? 5 : 85;

    if (reset == YES)
    {
        // reflag
        reset = NO;

        // redefined size
        scrollFrame.origin.x = self.myScrollView.frame.size.width * pages;            
    }

    // create image view for button
    UIImage *myIcon = [myImages objectAtIndex:i];
    UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom];

    // manipulate button behavior
    myButton.frame = CGRectMake(posX, posY, 80, 80);
    [myButton setTitle:[NSString stringWithFormat:@"%d", i] forState:UIControlStateNormal];
    [myButton setImage:myIcon forState:UIControlStateNormal];
    [myButton addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];

    // add image to subview
    [subView addSubview:myButton];

    if (counter == 8)
    {
        // reset position
        posX = 4;
        posY = 5;

        // populate counter
        counter = 0;
        pages++;

        // reset section
        reset = YES;

        // add subview to view
        [self.myScrollView addSubview:subView];
    }

    // add balance subview to scroller
    if (counter > 0 && i == myImages.count-1)
    {
        // add subview to view
        [self.myScrollView addSubview:subView];
        pages++;
    }
}

scrollFrame.origin.x = self.myScrollView.frame.size.width * pages;
self.myScrollView.contentSize = CGSizeMake(self.myScrollView.frame.size.width * pages, self.myScrollView.frame.size.height);
self.myPaging.numberOfPages = pages;
4

1 に答える 1

0

サブビューというビューにボタンを追加しています。ビューのフレームがスクロールビューのフレーム ( UIView *subView = [[UIView alloc] initWithFrame:scrollFrame];) と等しいため、最後の 2 つのボタンがこのビューの境界の外側に追加されます。

ボタンを追加した後にフレームを変更します-

スクロール ビューのコンテンツ サイズを変更する末尾に以下の行を追加します。

[subView setFrame:CGRectMake(subView.frame.origin.x, subView.frame.origin.y, _scrollView.frame.size.width * pages, _scrollView.frame.size.height)];
于 2012-11-22T13:38:24.377 に答える