Ios UIButton';使用scrollview滚动图像,但其操作/方法保持在原始位置
我有一个自动滚动的UIScrollView,我使用initWithFrame创建了几个按钮,每个按钮都有一个图像和一个唯一的操作(方法),并将它们全部添加到滚动视图中。按钮的图像可以通过滚动视图自动滚动,但当我单击每个按钮时,它不是我指定给该按钮的方法。当我点击相同的位置时,无论哪个按钮经过,它都会转到相同的方法,而不是该按钮的方法。下面是我创建按钮的代码:Ios UIButton';使用scrollview滚动图像,但其操作/方法保持在原始位置,ios,objective-c,uiscrollview,uibutton,Ios,Objective C,Uiscrollview,Uibutton,我有一个自动滚动的UIScrollView,我使用initWithFrame创建了几个按钮,每个按钮都有一个图像和一个唯一的操作(方法),并将它们全部添加到滚动视图中。按钮的图像可以通过滚动视图自动滚动,但当我单击每个按钮时,它不是我指定给该按钮的方法。当我点击相同的位置时,无论哪个按钮经过,它都会转到相同的方法,而不是该按钮的方法。下面是我创建按钮的代码: for (int i = 0; i < 4; i++) { //create an imageView object
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];
有什么线索可以解释为什么会发生这种奇怪的行为吗??谢谢。试试这段代码
在您看来,是否使用了加载方法
float x=62;
for(int i=0;i<4;i++)
{
self.stack=[UIButton buttonWithType:UIButtonTypeCustom];
self.stack.frame=CGRectMake(x+(62*i), 100, 52, 52);
[self.stack setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.stack setTitle:[self.titleName objectAtIndex:i] forState:UIControlStateNormal];
[self.stack setBackgroundColor:[UIColor redColor]];
self.stack.tag=i;
[self.stack addTarget:self action:@selector(actionMethod:) forControlEvents:UIControlEventTouchUpInside];
//your scroll view
//[self.scrView addSubview:self.btnlabe1];
[self.view addSubview:self.stack];
}
编辑代码
float x=62;
for(int i=0;i<4;i++)
{
self.stack=[UIButton buttonWithType:UIButtonTypeCustom];
self.stack.frame=CGRectMake(x+(62*i), 100, 52, 52);
[self.stack setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.stack setTitle:[temp objectAtIndex:i] forState:UIControlStateNormal];
[self.stack setBackgroundColor:[UIColor redColor]];
switch (i) {
case 0:
[self.stack addTarget:self action:@selector(aMethod0) forControlEvents:UIControlEventTouchUpInside];
break;
case 1:
[self.stack addTarget:self action:@selector(aMethod1) forControlEvents:UIControlEventTouchUpInside];
break;
case 2:
[self.stack addTarget:self action:@selector(aMethod2) forControlEvents:UIControlEventTouchUpInside];
break;
case 3:
[self.stack addTarget:self action:@selector(aMethod3) forControlEvents:UIControlEventTouchUpInside];
break;
default:
break;
} //your scroll view
//[self.scrView addSubview:self.stack];
[self.view addSubview:self.stack];
}
@remus,它与62相乘,而不是加法,所以它将是0,62,124,186。所以这不是问题没有错误,只是与我原来的方法相同我认为这不是分配按钮的好方法更改按钮框架Hi@karthikeyan你能更具体一点吗,我需要在按钮框架上更改什么等等。谢谢,正如我所说,我的问题的相同行为@karthikeyanput断点并检查方法是否正在调用?它是否工作
-(void)actionMethod:(id)sender
{
UIButton *button=(UIButton *)sender;
switch (button.tag) {
case 0:
NSLog(@"ACTIONMETHOD CODE HERE");
break;
case 1:
NSLog(@"ACTIONMETHOD1 CODE HERE");
break;
case 2:
NSLog(@"ACTIONMETHOD2 CODE HERE");
break;
case 3:
NSLog(@"ACTIONMETHOD3 CODE HERE");
break;
default:
break;
}
}
float x=62;
for(int i=0;i<4;i++)
{
self.stack=[UIButton buttonWithType:UIButtonTypeCustom];
self.stack.frame=CGRectMake(x+(62*i), 100, 52, 52);
[self.stack setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.stack setTitle:[temp objectAtIndex:i] forState:UIControlStateNormal];
[self.stack setBackgroundColor:[UIColor redColor]];
switch (i) {
case 0:
[self.stack addTarget:self action:@selector(aMethod0) forControlEvents:UIControlEventTouchUpInside];
break;
case 1:
[self.stack addTarget:self action:@selector(aMethod1) forControlEvents:UIControlEventTouchUpInside];
break;
case 2:
[self.stack addTarget:self action:@selector(aMethod2) forControlEvents:UIControlEventTouchUpInside];
break;
case 3:
[self.stack addTarget:self action:@selector(aMethod3) forControlEvents:UIControlEventTouchUpInside];
break;
default:
break;
} //your scroll view
//[self.scrView addSubview:self.stack];
[self.view addSubview:self.stack];
}
-(void)aMethod0
{
NSLog(@"action 0");
}
-(void)aMethod1
{
NSLog(@"action 1");
}
-(void)aMethod2
{
NSLog(@"action 2");
}
-(void)aMethod3
{
NSLog(@"action 3");
}