手势和长按显示菜单
来源:互联网 发布:淘宝达达妈生活馆假货 编辑:程序博客网 时间:2024/05/16 04:17
我们所需要知道的七个手势:
// UIPinchGestureRecognizer 捏合
// UISwipeGestureRecognizer 轻扫(手指在屏幕上很快的滑动)
// UIRotationGestureRecognizer 旋转
// UILongPressGestureRecognizer 长按
// UITapGestureRecognizer 轻敲(轻触)
// UIPanGestureRecognizer 滑动(手指的拖动)
// UIScreenEdgePanGestureRecognizer 屏幕边缘手势
(1)#pragma mark -- 点击手势(UITapGestureRecognizer)
-(void)demo {
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGerture:)];
tap.numberOfTapsRequired = 3;
tap.numberOfTouchesRequired = 2;
[self.redview addGestureRecognizer:tap];
}
-(void)tapGerture:(UITapGestureRecognizer *)tap {
NSLog(@"tap");
}
(2)#pragma mark --滑动手势 (UIPanGestureRecognizer)
-(void)demo1 {
UIPanGestureRecognizer *tap = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGerture:)];
[self.view addGestureRecognizer:tap];
}
-(void)panGerture:(UIPanGestureRecognizer *)pan {
CGContextRef context = UIGraphicsGetCurrentContext();
switch (pan.state) {
case UIGestureRecognizerStateBegan: {
_beginPoint = self.view.center;
CGContextMoveToPoint(context, _beginPoint.x, _beginPoint.y);
}
break;
case UIGestureRecognizerStateChanged: {
CGPoint point = [pan translationInView:self.redview];
self.redview.center = CGPointMake(_beginPoint.x + point.x, _beginPoint.y+point.y);
};
break;
case UIGestureRecognizerStateEnded: {
}
break;
case UIGestureRecognizerStateCancelled: {
}
break;
default:
break;
}
}
(3)#pragma mark--- 捏合手势 (UIPinchGestureRecognizer)
-(void)demo2 {
UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGerture:)];
[self.redview addGestureRecognizer:pinch];
}
-(void)pinchGerture:(UIPinchGestureRecognizer *)pin {
switch (pin.state) {
case UIGestureRecognizerStateBegan: {
}
break;
case UIGestureRecognizerStateChanged: {
CGFloat scale = pin.scale; //获取当前比例系数
CGFloat width = CGRectGetWidth(pin.view.frame)*(1-scale);
CGFloat height = CGRectGetHeight(pin.view.frame)*(1-scale);
pin.view.frame = CGRectInset(pin.view.frame, width/2, height/2);
pin.scale = 1;
};
break;
case UIGestureRecognizerStateEnded: {
}
break;
case UIGestureRecognizerStateCancelled: {
}
break;
default:
break;
}
}
(4)#pragma mark - 轻扫手势(UISwipeGestureRecognizer)
- (void)test4 {
UISwipeGestureRecognizer *switeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(switeGesture:)];
//right:向右滑,up:向上滑
//方向最多绑定两个,而且方向相反,左右,上下
//给它绑定两个手势
switeGesture.direction = UISwipeGestureRecognizerDirectionLeft | UISwipeGestureRecognizerDirectionRight|UISwipeGestureRecognizerDirectionUp|UISwipeGestureRecognizerDirectionDown;
[self.redView addGestureRecognizer:switeGesture];
}
- (void)switeGesture:(UISwipeGestureRecognizer *)swite {
NSLog(@"OK");
}
(5)#pragma mark - 旋转手势(UIRotationGestureRecognizer)
- (void)test5 {
UIRotationGestureRecognizer *ratationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(ratationGesture:)];
[self.redView addGestureRecognizer:ratationGesture];
}
- (void)ratationGesture:(UIRotationGestureRecognizer *)rotation{
switch (rotation.state) {
case UIGestureRecognizerStateChanged: {
rotation.view.transform = CGAffineTransformMakeRotation(rotation.rotation);
}
break;
default:
break;
}
}
(6)#pragma mark - 屏幕边缘手势(UIScreenEdgePanGestureRecognizer)
- (void)test7 {
UIScreenEdgePanGestureRecognizer *gesture = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(gesture:)];
gesture.edges = UIRectEdgeRight;
[self.view addGestureRecognizer:gesture];
}
- (void)gesture:(UIScreenEdgePanGestureRecognizer *)screenGesture {
NSLog(@"屏幕边缘");
}
(7)#pragma mark - 长按手势(UILongPressGestureRecognizer)
- (void)test6 {
UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longGesture:)];
[self.redView addGestureRecognizer:longGesture];
}
- (void)longGesture:(UILongPressGestureRecognizer *)longGesture {
switch (longGesture.state) {
case UIGestureRecognizerStateBegan: {
NSLog(@"begin");
CGPoint point = [longGesture locationInView:longGesture.view];
// 按住以后弹出一个menu(菜单):copy,selected,selectedAll,paste
UIMenuController *menuController = [UIMenuController sharedMenuController];
UIMenuItem *item1 = [[UIMenuItem alloc] initWithTitle:@"赋值" action:@selector(item1)];
menuController.menuItems = @[item1];
[menuController setTargetRect:CGRectMake(point.x, point.y, 0, 0) inView:longGesture.view];
[menuController setMenuVisible:YES animated:YES];
}
break;
case UIGestureRecognizerStateChanged: {
NSLog(@"change");
}
break;
case UIGestureRecognizerStateEnded: {
NSLog(@"end");
}
break;
default:
break;
}
}
//显示Mene的话需要重写父类的一个方法
- (BOOL)canBecomeFirstResponder {
return YES;
}
- (void)item1 {
}
//menu的其他按钮,只需要重写以下方法即可
- (void)selectAll:(id)sender {
}
- (void)select:(id)sender {
}
- (void)copy:(id)sender {
}
- (void)paste:(id)sender {
}
- 手势和长按显示菜单
- 手势-长按手势和显示的自定义的菜单项
- iOS手势 清扫和长按
- IOS 长按显示圆形菜单
- UITableViewCell长按显示快捷菜单
- 手势:长按
- 长按手势实现
- iOS 长按手势
- iOS 长按手势
- UILongPressGestureRecognizer长按手势
- 长按手势
- iOS手势 清扫和长按和旋转
- ios webView 同时添加单击和长按手势
- 轻扫手势/平移、长按手势
- IOS-如何干掉UITextField的长按手势菜单与输入内容限制
- IOS-如何干掉UITextField的长按手势菜单与输入内容限制
- Android 长按setOnItemLongClickListener 显示context Menu(上下文菜单)
- Android 长按setOnItemLongClickListener 显示context Menu(上下文菜单)
- swift学习之basic
- JDK下载和环境变量配置
- android 把图片剪裁成圆角矩形
- 深度学习系列(五):一个简单深度学习工具箱
- UVA 10878 Decode the tape (二进制)
- 手势和长按显示菜单
- mysql kill thread
- ubuntu14.04安装mysqlserver数据库
- Floodlight控制器实践——为模块加上Service和REST API,以及利用REST分析JSON输入、构造JSON输出
- 黑马程序员——单例设计模式(饿汉式,懒汉式)
- Linux 学习笔记(一)
- 简单-正则表达式贪婪与非贪婪模式
- UVA 1608 Non-boring sequences
- html标签总结