0

ボタンフレームが画像フレームサイズと同じに設定されている場所を作成しましたUIButtonUIImageView私がやりたいことは、一度画像に触れることPopOverです。ボタンにはアクションが設定されています。問題は、一度タッチすると画像しか表示されず、ポップアップしないことです。

コードの何が問題になっていますか?

- (void)viewDidLoad {
    [super viewDidLoad];    
    UIImageView *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(10, 10,100, 100)]; 
    imageView.image=[UIImage imageNamed:@"abc.jpg"];    
    [self.view addSubview:imageView];          
    imageView.userInteractionEnabled = YES;  
    UIButton *imageButton = [[UIButton alloc]init];
    [imageButton setFrame:CGRectMake(0, 0, 100, 100)];
    [imageButton addTarget:self action:@selector(imageTapped:) forControlEvents:UIControlEventTouchUpInside];
    [imageView addSubview:imageButton];
    [imageButton release];
    [imageView release];     
}


-(void)imageTapped:(UIButton*)in_sender {
    UIViewController *popoverContent = [[UIViewController alloc] init];
    CGRect theScreenFrame = [[UIScreen mainScreen] bounds];
    popoverContent.view.frame = CGRectMake(theScreenFrame.origin.x, theScreenFrame.origin.y,100, 100);
    popoverContent.view.backgroundColor = [UIColor whiteColor];
    popoverContent.contentSizeForViewInPopover = CGSizeMake(300, 300); 
    [popoverContent.view addSubview:imageButton];

    if(m_DetailPopover) {
        [m_DetailPopover release];
        m_DetailPopover = nil;
    }
    UIPopoverController m_DetailPopover = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
    [popoverContent release];   

    [m_DetailPopover presentPopoverFromRect:imageButton.frame inView:self.view
     permittedArrowDirections:UIPopoverArrowDirectionAny  animated:YES];    
}
4

3 に答える 3

1

問題はコードのタイプミスである可能性があります:

UIPopoverController *m_DetailPopover = [[UIPopoverController alloc] initWithContentViewController:popoverContent];

また、viewDidLoad で解放するため、imageTapped で imageButton を参照することはできません。

于 2013-03-05T12:08:59.503 に答える
0

画像ビューをサブビューとしてボタンに追加したり、その逆を行ったりしないでください。画像 (画像ビューではなく) を背景画像としてボタンに割り当てるだけです。

于 2013-03-05T12:05:20.213 に答える
0

UIImageView は UIButton の前にあり、ボタン アクションを取得できません。あなたのイメージでカスタムボタンを作成しませんか?

次のようにします。

UIButton *imageButton = [UIButton buttonWithType:UIButtonTypeCustom];
[imageButton setImage:[UIImage imageNamed:@"abc.jpg"]];
[imageButton setFrame:CGRectMake(0, 0, 100, 100)];
[imageButton addTarget:self action:@selector(imageTapped:) forControlEvents:UIControlEventTouchUpInside];
[imageView addSubview:imageButton];
[imageButton release];
[imageView release];

編集

UIPopoverController *m_DetailPopover = [[UIPopoverController alloc] initWithContentViewController:popoverContent];


[m_DetailPopover presentPopoverFromRect:imageButton.frame inView:self.view
 permittedArrowDirections:UIPopoverArrowDirectionAny  animated:YES];  
[popoverContent release];
于 2013-03-05T12:04:34.227 に答える