これが推奨される方法でも理想的な方法でもないことはわかっていますが、当分の間、これが私が行ったことです。後で良い方法を見つけたら、戻ってきて「正しく」実行する可能性があります。
NSBubbleData オブジェクトごとに、ビューにタッチ ジェスチャを追加します。ユーザーがタッチすると、touchEventOnImage:
メソッドが呼び出されます。送信者から、NSBubbleData によって設定された UIImageView のビューであるジェスチャ認識エンジンを取得できます。この画像を全画面表示できます。
これは私が使用したコードです:
- (void)addTouchGestureToBubble:(NSBubbleData *)oBubbleData
{
UITapGestureRecognizer * tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touchEventOnImage:)];
[tapRecognizer setNumberOfTouchesRequired:1];
//Don't forget to set the userInteractionEnabled to YES, by default It's NO.
oBubbleData.view.userInteractionEnabled = YES;
[oBubbleData.view addGestureRecognizer:tapRecognizer];
}
- (void)touchEventOnImage:(id)sender
{
if( [sender isKindOfClass:[UIGestureRecognizer class]] )
{
UIGestureRecognizer * recognizer = (UIGestureRecognizer *)sender;
if( [recognizer.view isKindOfClass:[UIImageView class]] )
{
UIImageView * imageView = [[UIImageView alloc] initWithImage:((UIImageView *)recognizer.view).image];
imageView.contentMode = UIViewContentModeScaleAspectFit;
imageView.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height);
imageView.backgroundColor = [UIColor blackColor];
// Remove the corner radius applied in the NSBubbleData class.
imageView.layer.cornerRadius = 0.0;
UIViewController * vc = [[UIViewController alloc] init];
vc.view = imageView;
[self.navigationController pushViewController:vc animated:YES];
}
}
}
これが少なくともあなたの進歩に役立つことを願っています。