拖拽(pan)手势

//
//  ViewController.m
//  拖拽手势
//
//  Created by Rio.King on 13-11-2.
//  Copyright (c) 2013年 Rio.King. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()
@property (nonatomic, strong)UIPanGestureRecognizer *panGestureRecognizer;
@property (nonatomic, strong)UILabel *helloWorldLabel;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	
    /*create a label*/
    CGRect labelFrame = CGRectMake(0.0f, 0.0f, 150.0f, 100.0f);
    self.helloWorldLabel = [[UILabel alloc] initWithFrame:labelFrame];
    self.helloWorldLabel.text = @"Hello World";
    self.helloWorldLabel.backgroundColor = [UIColor blackColor];
    self.helloWorldLabel.textColor = [UIColor whiteColor];
    self.helloWorldLabel.textAlignment = UITextAlignmentCenter;
    /*make sure to enable user interaction;other,tap events won't be caught on this label*/
    self.helloWorldLabel.userInteractionEnabled = YES;
    [self.view addSubview:self.helloWorldLabel];
    
    /*create the Pan Gesture Recognizer*/
    self.panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGestures:)];
    self.panGestureRecognizer.minimumNumberOfTouches = 1;
    self.panGestureRecognizer.maximumNumberOfTouches = 1;
    [self.helloWorldLabel addGestureRecognizer:self.panGestureRecognizer];
}

-(void)handlePanGestures:(UIPanGestureRecognizer *)paramSender{
    if (paramSender.state != UIGestureRecognizerStateEnded && paramSender.state != UIGestureRecognizerStateFailed) {
        CGPoint location = [paramSender locationInView:paramSender.view.superview];
        paramSender.view.center = location;
    }
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android 应用程序中实现旋转和拖动手势,可以使用 GestureDetector 和 ScaleGestureDetector 类。这两个类都是 Android SDK 中的标准类,用于检测用户的手势。 下面是一个简单的示例代码,演示如何使用 GestureDetector 和 ScaleGestureDetector 实现旋转和拖动手势: ```java public class MainActivity extends AppCompatActivity { private ImageView imageView; private float scaleFactor = 1.0f; private float rotationDegrees = 0.f; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageView = findViewById(R.id.imageView); // 设置双指缩放手势监听器 ScaleGestureDetector scaleGestureDetector = new ScaleGestureDetector(this, new ScaleGestureDetector.SimpleOnScaleGestureListener() { @Override public boolean onScale(ScaleGestureDetector detector) { scaleFactor *= detector.getScaleFactor(); imageView.setScaleX(scaleFactor); imageView.setScaleY(scaleFactor); return true; } }); // 设置单指旋转手势监听器 final GestureDetector gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { rotationDegrees -= distanceX; imageView.setRotation(rotationDegrees); return true; } }); // 设置 ImageView 触摸事件监听器,用于将手势事件传递给上面的手势监听器 imageView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { scaleGestureDetector.onTouchEvent(event); gestureDetector.onTouchEvent(event); return true; } }); } } ``` 在这个示例中,我们创建了一个 ImageView,用于演示手势操作的效果。然后我们创建了一个 ScaleGestureDetector 和 GestureDetector 实例,并将它们分别用于监听双指缩放和单指旋转手势。 最后,我们将 ImageView 的触摸事件传递给上面的手势监听器,以便检测用户的手势操作。当检测到手势操作时,我们通过修改 ImageView 的缩放和旋转属性来实现旋转和拖动操作。 请注意,这只是一个简单的示例代码,实际应用中还需要对手势操作进行更多的处理和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值