UI基础整理-4
2015-12-02 19:52
405 查看
触摸事件:
开始触摸:touchesbegan
移动触摸:touchesmoved
结束触摸:touchesended
取消触摸:touchescanceled
//开始触摸
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ }
//移动触摸
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ }
//结束触摸
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ }
//取消触摸
-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//获取触摸设备的对象
UITouch *touch = [touches anyObject];
//获取前一个点
CGPoint p1 = [touch previousLocationInView:self];
//获取当前的点
CGPoint p2 = [touch locationInView:self];
//根据两个点的横纵向距离来计算出移动结果,并将值赋给self.center更新位置
self.center = CGPointMake(p2.x - p1.x + self.center.x, p2.y - p1.y + self.center.y);
//UILabel、UIImageView的用户交互默认是关闭的
responer:
处理过程 : 被触摸视图 –> 传给父视图 –> View –> 视图控制器 –>window –>application …遗失
查询过程 : 硬件设备–> Application –> window –> 视图控制器 –> View –> 视图的各个子视图 最终找到被触摸的视图
防止在滑动屏幕的时候划出去
//屏幕尺寸
#define kWidth [UIScreen mainScreen].bounds.size.width
#define kHeight [UIScreen mainScreen].bounds.size.height
//视图边长的一半
#define kHalfSide self.bounds.size.width/2
//左极限
#define LeftMargin kHalfSide
//右极限
#define RightMargin kWidth - kHalfSide
//上极限
#define TopMargin kHalfSide
//下极限
#define BottomMargin kHeight - kHalfSide
if
(self.center.x<LeftMargin)
{
CGPoint
p =
CGPointMake(LeftMargin+1,self.center.y);
self.center=
p;
}elseif(self.center.x>RightMargin){
CGPoint
p =
CGPointMake(RightMargin-1,self.center.y);
self.center=
p;
}elseif(self.center.y<TopMargin){
CGPoint
p =
CGPointMake(self.center.x,TopMargin+1);
self.center=
p;
}elseif(self.center.y>BottomMargin){
CGPoint
p =
CGPointMake(self.center.x,BottomMargin-1);
self.center=
p;
}else{
//获取触碰设备的对象
UITouch*touch
= [touches
anyObject];
//获取前一个点
CGPointp1
= [touch
previousLocationInView:self];
//获取当前的点
CGPointp2
= [touch
locationInView:self];
//根据两个点的横纵向距离来计算出移动结果,并将值赋给self.center更新位置
self.center=CGPointMake(p2.x-p1.x+self.center.x,
p2.y-p1.y+self.center.y);
}
开始触摸:touchesbegan
移动触摸:touchesmoved
结束触摸:touchesended
取消触摸:touchescanceled
//开始触摸
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ }
//移动触摸
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ }
//结束触摸
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ }
//取消触摸
-(void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//获取触摸设备的对象
UITouch *touch = [touches anyObject];
//获取前一个点
CGPoint p1 = [touch previousLocationInView:self];
//获取当前的点
CGPoint p2 = [touch locationInView:self];
//根据两个点的横纵向距离来计算出移动结果,并将值赋给self.center更新位置
self.center = CGPointMake(p2.x - p1.x + self.center.x, p2.y - p1.y + self.center.y);
//UILabel、UIImageView的用户交互默认是关闭的
responer:
处理过程 : 被触摸视图 –> 传给父视图 –> View –> 视图控制器 –>window –>application …遗失
查询过程 : 硬件设备–> Application –> window –> 视图控制器 –> View –> 视图的各个子视图 最终找到被触摸的视图
防止在滑动屏幕的时候划出去
//屏幕尺寸
#define kWidth [UIScreen mainScreen].bounds.size.width
#define kHeight [UIScreen mainScreen].bounds.size.height
//视图边长的一半
#define kHalfSide self.bounds.size.width/2
//左极限
#define LeftMargin kHalfSide
//右极限
#define RightMargin kWidth - kHalfSide
//上极限
#define TopMargin kHalfSide
//下极限
#define BottomMargin kHeight - kHalfSide
if
(self.center.x<LeftMargin)
{
CGPoint
p =
CGPointMake(LeftMargin+1,self.center.y);
self.center=
p;
}elseif(self.center.x>RightMargin){
CGPoint
p =
CGPointMake(RightMargin-1,self.center.y);
self.center=
p;
}elseif(self.center.y<TopMargin){
CGPoint
p =
CGPointMake(self.center.x,TopMargin+1);
self.center=
p;
}elseif(self.center.y>BottomMargin){
CGPoint
p =
CGPointMake(self.center.x,BottomMargin-1);
self.center=
p;
}else{
//获取触碰设备的对象
UITouch*touch
= [touches
anyObject];
//获取前一个点
CGPointp1
= [touch
previousLocationInView:self];
//获取当前的点
CGPointp2
= [touch
locationInView:self];
//根据两个点的横纵向距离来计算出移动结果,并将值赋给self.center更新位置
self.center=CGPointMake(p2.x-p1.x+self.center.x,
p2.y-p1.y+self.center.y);
}
相关文章推荐
- 13、UIKit Dynamics学习
- UE4 Particle Instance Parameters Tutorial
- Android进程和线程 --消息队列模型 (Looper, MessageQueue, Handler) (1)
- view 中的 opaque , alpha , 和 alpha 的区别
- POJ2299 Ultra-QuickSort 归并排序和逆序数,树状数组
- 【HDU 1005】Number Sequence
- serialVersionUID的作用
- CF235C Cyclical Quest
- iOS-UIButton-文字位置,字体大小,边角样式,button种类,点击事件,内容位置
- js easyui messager.confirm 界面弹出框 焦点的修改
- iOS-UIView-设置背景图片4种方式
- java中String.valueOf()和toString()方法的区别
- elasticsearch java query API
- UI-2-UILabel&UIImageView-补充
- 在C#中对于null/DBNull.Value值进行类型转换时,除了Convert.ToString()之外,其他的转换都会报空引用异常;
- iOS NSOperationQueue与GCD
- Kendo UI
- java(6)--GUI学习
- 生成UUID
- return, break and continue