Селектор UIButton не работает в главном окне - PullRequest
0 голосов
/ 12 августа 2011

Я добавляю пользовательский вид в главное окно, затем на вид, который создаю кнопку, и кнопка отображается, но действие не выполняется при нажатии кнопки. нажмите кнопку, чтобы открыть фотогалерею. и в цикле кнопки создаются.

код, который я использую, есть ...

UIImage *image=[[UIImage alloc] initWithData:data cache:NO];
UIImageView *iv=[[UIImageView alloc] initWithFrame:CGRectMake(200, y, 75, 75)];

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(200, y, 75, 75)];
[button setAlpha:0];
[button setTag:i];//change this to your loop counter
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];  

iv.image=image;
//  iv.tag=@"bigimage.jpg";
iv.userInteractionEnabled=YES;
button.userInteractionEnabled = YES;

[iv addSubview:button];
[button release];

y=y+145;
[view1 addSubview:iv];
[iv release];

А также попробуйте этот код, но улучшений нет ...

UIButton *button=[UIButton buttonWithType:UIButtonTypeCustom];
        button.frame=CGRectMake(200, y, 75, 75);
        UIImage *img = [[UIImage alloc] initWithData:data];
        [button setBackgroundImage:img forState:UIControlStateNormal];
        [button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
        button.tag = i;
        y = y+145;
        [view1 addSubview:button];

Ответы [ 4 ]

1 голос
/ 12 августа 2011

Рамка вашей кнопки не должна иметь то же происхождение x и y, что и ваше изображение. Если вы хотите, чтобы оно было внутри вида изображения, оно должно иметь происхождение x: 0 y: 0 и ту же ширину и высоту, что и изображение.

Происхождение x, y относительно его родителя. В твоем случае картинка просмотра.

0 голосов
/ 12 августа 2011

Пользователь не может нажать кнопку, если вы установили альфа кнопки на 0. Это означает, что событие не будет запущено.

[button setAlpha:0];

Это имеет тот же эффект, что и настройка button.hidden = YES.

Если вы хотите использовать невидимую зону щелчка, используя кнопку, установите тип кнопки на UIButtonTypeCustom, и это должно помочь.

0 голосов
/ 12 августа 2011

Попробуйте добавить NSLog в buttonPressed: и посмотрите, вызывается ли этот метод.Возможно, метод вызывается, но приложение Photo Gallery не запускается по какой-то другой причине.

0 голосов
/ 12 августа 2011

Привет Шиванги,

         I think you want to set image on button so try this code its will help you



          //function to create button dynamically on scrollview
          -(void)createButton
           {
            int Y = 20;
            indexRow = 0;
            for (int i = 0; i < [prow.noOfPhotos count]; i++) 
            {
              thumbNailButton = [UIButton buttonWithType:UIButtonTypeCustom];       
              int X = 4 + (78 * (i % 4));
              NSLog(@"X = %d",X);

              NSLog(@"Start Y = %d",Y);
              if (i % 4 == 0) 
              {
            NSLog(@"%d",i);
            Y = (70 * verticalImageRowCount);
            NSLog(@"Y = %d",Y);
            verticalImageRowCount++;
            NSLog(@"VerticalImageRowCount= %d");
              } 

              CGRect rect = myScrollView.frame;
               rect.size.width = 100;
               rect.size.height = Y + 77; 
               myScrollView.contentSize = CGSizeMake(rect.size.width,rect.size.height);
               thumbNailButton.frame = CGRectMake(X,Y, 62,65);

               view = [[UIImageView alloc] init];

               prow.photo = [prow.noOfPhotos objectAtIndex:indexRow];

               imagePath = prow.photo;
               asyncImageView = [[[AsyncImageView alloc] initWithFrame:CGRectMake(4, 0, 62, 65)] autorelease];
               asyncImageView.backgroundColor = [UIColor clearColor];
               [view addSubview:asyncImageView];

               NSURL *url = [NSURL URLWithString:imagePath];
               [asyncImageView loadImageFromURL:url];           
               [view setImage:[UIImage imageNamed:[prow.noOfPhotos objectAtIndex:i]]];

               thumbNailButton.tag = i;
               thumbNailButton.backgroundColor=[UIColor clearColor];
                   [thumbNailButton addTarget:self action:@selector(imageClicked:) forControlEvents:UIControlEventTouchUpInside];   
               [thumbNailButton addSubview:view];
               [myScrollView addSubview:thumbNailButton];
               indexRow+= 1;

                }
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...