iOS:在子视图中滑动手势

Cra*_*Dev 1 xcode rotation swipe ios

我应该在子视图中实现滑动手势; 这个子视图是一个斜视图

view1.transform = CGAffineTransformMakeRotation( ( 54 * -M_PI ) / 180 );
Run Code Online (Sandbox Code Playgroud)

我希望在这个视图中实现滑动手势,如果它发生我应该有一个NSLog,说滑动发生在这个视图中,是否可能?

小智 5

就像任何其他UIView一样,可以添加手势识别器:

UISwipeGestureRecognizer *swipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
[view1 addGestureRecognizer:swipeGestureRecognizer];
Run Code Online (Sandbox Code Playgroud)

问题在于UISwipeGestureRecognizer的属性"方向".有关此属性的Apple文档:

此手势识别器的滑动允许方向.

由于视图旋转,因此方向会旋转.如果视图旋转180度并且用户向右滑动,则手势识别器将其视为向左滑动.我建议使用一个应该放置手势识别器的包装器视图.试试这个:

UIView *view2 = [[UIView alloc] initWithFrame:view1.frame];
[view1.superview addSubview:view2];

view2.backgroundColor = [UIColor clearColor];
UISwipeGestureRecognizer *swipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(didSwipe:)];
[view2 addGestureRecognizer:swipeGestureRecognizer];
Run Code Online (Sandbox Code Playgroud)

缺点是view2中有某些区域,但view1外部会响应手势识别器.