iphone - 如何同时检测主视图 UILongPressGestureRecognizer 和 subview UIPanGestureRecognizer

标签 iphone ios xcode uiview uipangesturerecognizer

我的 UILongPressGestureRecognizer 和 UIPanGestureRecognizer 遇到了问题。

我希望在我的 self.view 中长按以在我的 self.view 中添加一个带有 UIPanGestureRecognizer 的 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];

    }

}

最佳答案

-(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");

    }
}

关于iphone - 如何同时检测主视图 UILongPressGestureRecognizer 和 subview UIPanGestureRecognizer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10890246/

相关文章:

ios - Swift - TableView 加载错误 - 可怕的 SIGBART

ios - iOS SDK 中带有 mov、3gp 和 mp4 的 RTSP 播放扩展

ios - Xcode 9 - 框架断点

iphone - View Controller 堆栈

iphone - 如何在 iPhone/Objective C 上找出 RSA 公钥的模数和指数

iphone - UIDatePicker 非连续分钟

ios - 在表格 View 单元格内设置 Collection View 约束的正确方法

xcode - 如何使用 Swift 打开我的 OSX 应用程序的父文件夹

ios - 使用 Interface Builder 中的自动布局而不是代码使 UIView 填充包含 View

iphone - UIimageView 圆顶角 BezierPath 不起作用?