-1

iPad アプリ (XCode 4.6、ストーリーボード、iOS 6.2) を持っています。私はこのように構成されたシーンを持っています:

  1. UIView (subViewData - #2 の右側の象限をカバーし、その下と右側は #2 の時間と名前をカバーしていない - 予定情報 (顧客名、期間は影付き) を含む
  2. UIView (subViewGrid - 下半分をカバーします (画像では、左余白に時間が含まれ、上部余白に名前が含まれています。)
  3. UIScrollView (下半分のビューをカバー)
  4. UIView ------- UIView (ウィンドウの上半分に 1 つ、下半分にもう 1 つ)
  5. UIViewController (CalendarViewController という名前)

カレンダーとスケジュール

これは、CalendarViewController の -viewDidLoad にある UITapGestureRecognizer を初期化するコードです。

    //  setup for tap recognizer
UITapGestureRecognizer *fingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self
                                    action:@selector(singleFingerTap:)];
fingerTap.numberOfTapsRequired = 1;
fingerTap.numberOfTouchesRequired = 1;
[subViewData addGestureRecognizer:fingerTap];

これは、実行されていない subViewData (#1) のコードです。

- (void)singleFingerTap:(UITapGestureRecognizer*)gesture {

CGPoint pt = [gesture locationInView:self];
UIView *v = [self hitTest:pt withEvent:nil];

if(v.tag == 100)  //  if this is for calendar, return
    return;

CGRect dataRect = CGRectMake(110.0,48.0,670.0,1450);
CGPoint dataPoint = CGPointMake(pt.x, pt.y);

//  check to see if point is within the rectangle
if(!CGRectContainsPoint(dataRect, dataPoint))  {
    NSLog(@"\n\nNOT within subViewData");
    return;
}
else  {
    NSLog(@"\n\nIS within subViewData");
}

}

問題は、なぜタップをキャプチャしないのですか? 認識コードは、コントローラーまたはタップを取得していると思われるビューにあるはずですか? この件に関して見つけられるほとんどすべてを読みましたが、この特定のシナリオでは何も見つかりません。助けていただければ幸いです。

4

1 に答える 1

2

あなたは言う:

これは、CalendarViewController の -viewDidLoad にある UITapGestureRecognizer を初期化するコードです。

そして、そのコードは次のように述べています。

 [[UITapGestureRecognizer alloc] initWithTarget:self
                                action:@selector(singleFingerTap:)];

次に、ターゲットがであり、CalendarViewController のインスタンスであるsingleFingerTap:ことをジェスチャ レコグナイザーに通知したため、CalendarViewController を配置する必要があります。selfself

あなたはまた言う:

これは、実行されていない subViewData (#1) のコードです。

しかし、「in subViewData」が何を意味するのかわかりません。インターフェイスの説明で「subViewData」と呼ばれるものについて言及していませんでした。とにかくそれは問題ではありません。指定selfしたので、コードは にある必要がありますself

しかし、問題のビューがまったく触れられていないように思えます。おそらく、それは公開されていません (つまり、別のビューで覆われています)。おそらくそれuserInteractionEnabledはNOです。多くの理由が考えられます。

于 2013-04-19T01:48:52.030 に答える