使用两个手指捏缩放collectionView Xcode

时间:2015-10-21 15:34:47

标签: cocoa-touch uiscrollview xcode6 uicollectionview

我有一个在scrollView中有一个collectionView的应用程序。我正在使用以下代码来放大和平移。

-(void) viewDidLoad {
    [super viewDidLoad];

    twoFingerPinchA = [[UIPinchGestureRecognizer alloc]
                                                initWithTarget:self
                                                action:@selector(twoFingerPinch:)]
    ;
    [self.view addGestureRecognizer:(twoFingerPinchA)];
}

-(void)twoFingerPinch:(UIPinchGestureRecognizer *)recognizer{

  CGAffineTransform transform = CGAffineTransformMakeScale(twoFingerPinchA.scale, twoFingerPinchA.scale);

    if (twoFingerPinchA.scale < 1) {
        twoFingerPinchA.scale = 1;
    }

    if (twoFingerPinchA.scale >2) {
        twoFingerPinchA.scale = 2;
    }
    self.scrolling.transform = transform;

}

除非我放大并移开手指,否则效果很好。当我将两个手指放回屏幕上进行缩小或再次放大时,视图返回到未放大。当我在屏幕上更换两个手指以重新缩放时,如何让视图保持放大。 我已经尝试捕获我可以做的twoFingerPinchA.scale值。但我不知道如何将twoFingerPinchA.scale的初始值设置为该值,因为它总是返回到1。

有什么想法吗?

所以我现在正试图检测两根手指触摸屏幕的时间以及当两根手指触摸停止时,我可以保存并插入twoFingerPinchA.scale的值。

然而无论我放入什么,我似乎无法检测到触摸。

我有我的控制器常规视图,然后我有一个滚动视图,然后在其中的collectionView。

我已为所有视图启用了互动和多次触摸,并尝试检测所有视图中的触摸但未收到回叫。这是我的代码。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"Event:%@",event);
// I don't even get this call back as a touch beginning on any view.
    if ([[event touchesForView:self.view] count] >0) {
        NSLog(@"touches");
    }
}

1 个答案:

答案 0 :(得分:0)

所以我想出来了。

首先我使用了这段代码

"scripts": {
    "start": "DEVELOPMENT=1 node ./node_modules/nodemon/bin/nodemon.js --watch server -e js,less index.js",
    "watch-client": "DEVELOPMENT=1 node ./node_modules/webpack/bin/webpack.js --verbose --colors --display-error-details --config webpack.watch.js && node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js --config webpack.watch.js",
    "watch": "node ./node_modules/concurrently/src/main.js --kill-others \"npm run watch-client\" \"npm run start\""
  },

//这是为了确保pinchValue键在首次安装应用时具有值。

然后我把这个

-(void) viewWillAppear:(BOOL)animated{
    NSString *pinchString = @"1.0";
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:pinchString forKey:@"pinchValue"];
  }

在我的          - (void)twoFingerPinch:(UIPinchGestureRecognizer *)识别器{}

当夹点结束时,它会在usersDefaults中存储twoFingerPinchA.scale的值

在再次开始时将twoFingerPinchA.scales设置为该存储值。从那里开始根据这个值向上和向下调整。

效果很好