1

初めての iPhone アプリを作成しようとしています。この問題を解決するのを手伝ってください!! コントローラーのビューのサブビューとしてスクロールビューがあり、ラベル、ボタン、テキストフィールド、テーブルビューなどのいくつかのコントロールがこのスクロールビューのサブビューとして配置されています。ボタンをタップするとテーブルビューが表示されるようになりましたが、テーブルビューの外側をタップすると(つまり、スクロールビューをタップすると)、このテーブルビューを閉じることができませんでした。

以下は、テーブルビューを閉じようとしたコードスニペットです。助けてください!

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];
    if (aTouch.tapCount == 1)
    {
        CGPoint p = [aTouch locationInView:self.scrollview];
        if (!CGRectContainsPoint(myTableView.frame, p))
        {
            myTableView.hidden = YES;
        }
    }
}
4

1 に答える 1

0

このコードをViewController.m内に配置して、self.viewをタップしたときにアクティブになるようにします。scrollViewがself.viewをオーバーレイして、アクションがアクティブにならないようにします。

scrollView をサブクラス化し、IB でタイプを選択し、YourScrollView.m 内に次のコードを追加します。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];
    if (aTouch.tapCount == 1)
    {
        CGPoint p = [aTouch locationInView:self];
        for (UIView *aView in self.subviews) {
            if (([aView isKindOfClass:[UITableView class]])&&(!CGRectContainsPoint(aView.frame, p)))
            {
                [aView setHidden:YES];
            }

        }
    }
}
于 2013-03-17T16:05:45.703 に答える