【发布时间】:2014-05-30 05:21:19
【问题描述】:
我有一个自动滚动的 UIScrollView,我使用 initWithFrame 创建了几个按钮,每个按钮都有一个图像和一个独特的操作(方法),并将它们全部添加到滚动视图中。按钮的图像可以使用滚动视图自动滚动,但是当我单击每个按钮时,这不是我分配给该按钮的方法。当我点击同一个位置时,无论经过哪个按钮,它都会转到相同的方法而不是那个按钮的方法。下面是我创建按钮的代码:
for (int i = 0; i < 4; i++) {
//create an imageView object in every 'page' of the scrollView.
CGRect frame;
frame.origin.x = 62 * i;
frame.origin.y = 0;
frame.size = CGSizeMake(52.0, 52.0);
myButton = [[UIButton alloc] initWithFrame:frame];
[myButton setImage:[MyImageArray objectAtIndex:i] forState:normal];
switch (i) {
case 0:
[myButton addTarget:self action:@selector(aMethod0) forControlEvents:UIControlEventTouchUpInside];
break;
case 1:
[myButton addTarget:self action:@selector(aMethod1) forControlEvents:UIControlEventTouchUpInside];
break;
case 2:
[myButton addTarget:self action:@selector(aMethod2) forControlEvents:UIControlEventTouchUpInside];
break;
case 3:
[myButton addTarget:self action:@selector(aMethod3) forControlEvents:UIControlEventTouchUpInside];
break;
default:
break;
}
[self.MyScrollView addSubview:myButton];
下面是自动滚动scrollview的代码:
- (void)move_pagination {
UIPageControl *pgCtr = MyPageControl;
CGFloat contentOffset = MyScrollView.contentOffset.x;
__block int nextPage = (int)(contentOffset/(MyScrollView.frame.size.width+10)) + 1 ;
[UIView animateWithDuration:10
delay:0
options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction
animations:^{
if( nextPage!=3 ) {
MyScrollView.contentOffset = CGPointMake(nextPage*(10+MyScrollView.frame.size.width), 0);
pgCtr.currentPage=nextPage;
// else start sliding from 1 :)
} else {
nextPage = 1;
MyScrollView.contentOffset = CGPointMake(0, 0);
MyScrollView.contentOffset = CGPointMake(nextPage*(10+MyScrollView.frame.size.width), 0);
pgCtr.currentPage=2;
}
}
completion:nil];
}
任何线索为什么会发生这种奇怪的行为?谢谢。
【问题讨论】:
-
@remus,它与 62 相乘而不是加法,所以它将是 0、62、124、186。所以这不是问题
标签: ios objective-c uiscrollview uibutton