3

iOSチャットアプリを作っています。UIBubbleTableViewテキストや画像を表示するために使用します。

ここで、画像をクリックして別のビューに移動できるようにしたい(フルサイズで見ることができる)。しかしUIBubbleTableView、それをサポートしていないようです。どうすれば修正できますか?

これがviewDidLoadの私のコードです:

- (void)viewDidLoad
{
    //Something here//
    [super viewDidLoad];
    NSBubbleData *photoBubble = [NSBubbleData dataWithImage:[UIImage         
    imageNamed:@"halloween.jpg"] date:[NSDate dateWithTimeIntervalSinceNow:-290]     
    type:BubbleTypeSomeoneElse];
    //something else here//
}

これらのコードを使用すると、画像が表示されるだけです。

4

1 に答える 1

5

これが推奨される方法でも理想的な方法でもないことはわかっていますが、当分の間、これが私が行ったことです。後で良い方法を見つけたら、戻ってきて「正しく」実行する可能性があります。

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];
        }
    }
}

これが少なくともあなたの進歩に役立つことを願っています。

于 2013-06-11T00:45:51.053 に答える