2012-06-05 3 views
1

UILongPressGestureRecognizer 및 UIPanGestureRecognizer에 문제가 발생했습니다.기본보기 UILongPressGestureRecognizer 및 하위보기 UIPanGestureRecognizer를 모두 감지하는 방법

내 self.view에서 UIPanGestureRecognizer로보기를 추가하려면 my self.view를 길게 누릅니다.

그러나 UIPanGestureRecognizer가 인식하지 못합니다.

내가 놓친 것이 있습니까?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    //[self initImagesAndGesture]; 

    UILongPressGestureRecognizer *tapRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(addImgView:)]; 
    tapRecognizer.numberOfTouchesRequired = 1; 
    tapRecognizer.minimumPressDuration = 0.7; 
    [tapRecognizer setDelegate:self]; 
    self.view.userInteractionEnabled = YES; 

    [self.view addGestureRecognizer:tapRecognizer]; 
} 

-(void)addImgView:(UILongPressGestureRecognizer *)recognizer 
{ 
    NSLog(@"tappppp"); 

    if(UIGestureRecognizerStateBegan == recognizer.state) { 
     // Called on start of gesture, do work here 

     NSLog(@"UIGestureRecognizerStateBegan"); 
     UIImage *img = [UIImage imageNamed:@"beer.png"]; 
     UIImageView *imgView = [[UIImageView alloc]initWithImage:img]; 

     UILabel *timeStamp = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 30, 30)]; 
     timeStamp.text = [NSString stringWithFormat:@"%f",[NSDate date]]; 

     UIView *drinkView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 50, 50)]; 
     [drinkView setUserInteractionEnabled:YES]; 

     CGPoint tapLocation = [recognizer locationInView:recognizer.view]; 

     [timeStamp setCenter:CGPointMake(tapLocation.x, tapLocation.y)]; 
     [imgView setCenter:CGPointMake(tapLocation.x,tapLocation.y)]; 

     [drinkView addSubview:imgView]; 
     [drinkView addSubview:timeStamp]; 

     [drinkView setUserInteractionEnabled:YES]; 

     [imgView setUserInteractionEnabled:YES]; 
     [timeStamp setUserInteractionEnabled:YES]; 

     UIPanGestureRecognizer *recognizer1 = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan1:)]; 
     [recognizer1 setDelegate:self]; 
     [drinkView addGestureRecognizer:recognizer1]; 
     [self.view addSubview:drinkView]; 

    } 

} 

답변

2
-(void)addImgView:(UILongPressGestureRecognizer *)recognizer 
{ 
    NSLog(@"tappppp"); 

    if(UIGestureRecognizerStateBegan == recognizer.state) { 
     // Called on start of gesture, do work here 

     NSLog(@"UIGestureRecognizerStateBegan"); 
     UIImage *img = [UIImage imageNamed:@"beer.png"]; 
     UIImageView *imgView = [[UIImageView alloc]initWithImage:img]; 

     UILabel *timeStamp = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 150, 30)]; 
     timeStamp.text = [NSString stringWithFormat:@"%f",[NSDate date]]; 

     UIView *drinkView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 75,115)]; 
     drinkView.backgroundColor=[UIColor redColor]; 
     [drinkView setUserInteractionEnabled:YES]; 

     CGPoint tapLocation = [recognizer locationInView:recognizer.view]; 

     [drinkView setCenter:CGPointMake(tapLocation.x,tapLocation.y)]; 



     [drinkView setUserInteractionEnabled:YES]; 
     [imgView setUserInteractionEnabled:YES]; 
     [timeStamp setUserInteractionEnabled:YES]; 

     [drinkView addSubview:imgView]; 
     [drinkView addSubview:timeStamp]; 


     UIPanGestureRecognizer *recognizer1 = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePan1:)]; 
     [recognizer1 setDelegate:self]; 
     [drinkView addGestureRecognizer:recognizer1]; 


     [self.view addSubview:drinkView]; 

    } 

    if(UIGestureRecognizerStateChanged == recognizer.state) { 
     // Do repeated work here (repeats continuously) while finger is down 
     NSLog(@"UIGestureRecognizerStateChanged"); 

    } 

    if(UIGestureRecognizerStateEnded == recognizer.state) { 
     // Do end work here when finger is lifted 
     NSLog(@"UIGestureRecognizerStateEnded"); 

    } 
} 
관련 문제