IOS学习之——UItouch的相关使用



下面通过UItouch,来实现一个图片的拖拽功能,效果图如上图


#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
    //定义一个最后的点
    CGPoint pLast;
}

@end


//
//  ViewController.m
//  UItouch相关
//
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //在界面上画一个image
    UIImage *imge=[UIImage imageNamed:@"welcome1"];
    UIImageView *iv=[[UIImageView alloc]initWithImage:imge];
    
    iv.frame=CGRectMake(50, 100, 300, 500);
    
    iv.tag=101;
    [self.view addSubview:iv];
}
//点击屏幕开始的瞬间调用此函数
//一次点的过程是:
//state1、手指触碰屏幕
//state2、手指接触到屏幕并且没有离开,按住屏幕时,包括按住并且移动手指。
//state3、手指离开屏幕
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    NSLog(@"手指触屏瞬间调用……");
    
    //获取任意的点击对象
    //一般只有一个点击对象,获得的对象就是点击对象
    UITouch *touch=[touches anyObject];
    if(touch.tapCount==1){//单次点击
        NSLog(@"单次点击");
        //连续点击,0.5秒之内算是双击
    }else if(touch.tapCount==2){
        NSLog(@"双击……");
    }
    pLast=[touch locationInView:self.view];
}
//state2、手指接触到屏幕并且没有离开,按住屏幕时,包括按住并且移动手指。
-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    NSLog(@"手指移动的时候……");
    //获取当前触碰对象
    UITouch *touch=[touches anyObject];
    //获得当前坐标点
    CGPoint point=[touch locationInView:self.view];
    NSLog(@"当前坐标 X=%f Y=%f",point.x,point.y);
    
    //每次移动的偏移量
    float xoffset=point.x-pLast.x;
    float yoffset=point.y-pLast.y;
    
    pLast=point;//将当前拖拽的点,保存为最后的点
    
    UIImageView *iv=[self.view viewWithTag:101];
    iv.frame=CGRectMake(iv.frame.origin.x+xoffset, iv.frame.origin.y+yoffset, iv.frame.size.width, iv.frame.size.height);
    
}
//state3、手指离开屏幕
-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    NSLog(@"手指离开屏幕时调用……");
}

//比如电话来了,紧急情况,触屏取消
-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    NSLog(@"特殊情况中断触屏事件调用…………");
}


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

@end












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值