9

連絡先の追加ページには、ビューとスクロールビューがあり、さらにビューがあります。その最後のビューでは、テキストボックスなどを使用しています。「touchesBegan」メソッドを指定しましたが、これは下部のビューに対してのみ呼び出されます。そのメソッドを別のビュー、つまり一番上のビューに向ける方法は?

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
 [self.AddView endEditing:YES];
}   
4

7 に答える 7

30

1つの方法は次のとおりです。

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch= [touches anyObject];
    if ([touch view] == image1)
    {
        //Action
    }

}

注意: UIScrollView を使用しているため、UIScrollView の touches メソッドを取得できない場合があります。その場合、UIGesture を使用する必要があるかもしれません。

于 2013-07-04T10:30:13.177 に答える
9

Swiftでの答えは次のとおりです。

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    let touch = touches.first as! UITouch
    if(touch.view == myView){
        // Code
    }
}
于 2015-06-07T23:15:34.793 に答える
6

最初UserInteractionEnabledにそのコントロール全体のプロパティを確認し、に設定しますYES

そのビューで終わっていないボトムビューフレームをチェックアウトした後

そして、次の条件でそれをチェックアウトし、特定のコントロールのタッチイベントで何かを行うことができます..

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    [touch locationInView:viewBoard];
    if([touch.view isKindOfClass:[UIImageView class]])
    {
       UIImageView *tempImage=(UIImageView *) touch.view;
       if (tempImage.tag  == yourImageTag) 
       {
          /// write your code here
       }
     }
}
于 2013-07-04T10:44:33.587 に答える
4

これを試して :

  - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
        UITouch *touch1 = [touches anyObject];
        CGPoint touchLocation = [touch1 locationInView:self.finalScore];

         if(CGRectContainsPoint(YourView.frame, touchLocation));
         {
            //Do stuff.
         }


  }
于 2013-07-04T10:32:17.593 に答える
2

試す

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [[event touchesForView:vTouch] anyObject];
    if(!touch)
        return;

    CGPoint pointNow = [touch locationInView:otherView];
    {
        // code here
    }
}
于 2013-07-04T10:29:51.173 に答える