手势
userInteractionEnabled叫用户交互,如果没有打开的话没有办法通过手势的方式和它进行交互,如果没有确定是否打开,打印一下就可以,没打开的对象打印会有提醒(一般只有lable,imageView是关的)
<span style="font-size:18px;"> self.image = [[UIImageView alloc] initWithFrame:CGRectMake(100, 100, 300, 300)];
self.image.backgroundColor = [UIColor cyanColor];
[self.view addSubview:self.image];
[_image release];
self.image.image = [UIImage imageNamed:@"5.jpg"];
// userInteractionEnabled叫用户交互,如果没有打开的话没有办法通过手势的方式和它进行交互
// 如果不确定交互开没开.打印一下就可以,没打开的对象打印会有提示
self.image.userInteractionEnabled = YES; // 打印后的结果里userInteractionEnabled = NO消失
// NSLog(@"%@", self.imageView); // 一般中有imageView, lable是关的
// UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
// NSLog(@"%@", button);
// UILabel *lable = [[UILabel alloc] initWithFrame:CGRectMake(1, 1, 10, 10)];
// NSLog(@"%@", lable);</span>
手势1.点击
<span style="font-size:18px;">UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
// // 把手势添加到视图上
// [self.imageView addGestureRecognizer:tap];
// // 内存管理
// [tap release];
// // 触发方法需要点击几次,默认是1
// tap.numberOfTapsRequired = 2;
// // 手指个数
// tap.numberOfTouchesRequired = 2;</span>
方法的实现
<span style="font-size:18px;">- (void)tapAction:(UITapGestureRecognizer *)tap{
NSLog(@"图片被点击");
}</span>
2.长按
<span style="font-size:18px;">// UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)];
// [self.image addGestureRecognizer:longPress];
// // 数组
// [longPress release];
// // 设置触发的最短时间
// longPress.minimumPressDuration = 2;
// // 设置可移动的范围
// longPress.allowableMovement = 300;
// // 可以按照对应的手势状态来完成判断
// if (longPress.state == UIGestureRecognizerStateBegan) {
// NSLog(@"开始了");
// }</span>
长按的方法
<span style="font-size:18px;">- (void)longPressAction:(UILongPressGestureRecognizer *)longPress{
NSLog(@"长按了");
}</span>
旋转手势(Alt + 鼠标)
<span style="font-size:18px;"> UIRotationGestureRecognizer *tapRotation = [[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(tapRotation:)];
[self.image addGestureRecognizer:tapRotation];</span>
旋转的方法
<span style="font-size:18px;">- (void)tapRotation:(UIRotationGestureRecognizer *)tapRotation{
NSLog(@"旋转了");
//图片随手势一同旋转
self.image.transform = CGAffineTransformRotate(self.image.transform, tapRotation.rotation);
// self.image.transform = CGAffineTransformRotate(self.image.transform, tapRotation.rotation);
// 控制旋转的速度,速度是叠加的,越来越快,所以要赋初值为0
tapRotation.rotation = 0;
}</span>
捏合手势
<span style="font-size:18px;">// UIPinchGestureRecognizer *tapPinch = [[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(tapPinch:)];
// [self.image addGestureRecognizer:tapPinch];</span>
捏合的触发方法
<span style="font-size:18px;">- (void)tapPinch:(UIPinchGestureRecognizer *)tapPinch{
NSLog(@"捏合");
self.image.transform = CGAffineTransformScale(self.image.transform, tapPinch.scale, tapPinch.scale);
tapPinch.scale = 1;
}</span>
拖拽手势
<span style="font-size:18px;">//5.拖拽
// // UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];
// // [self.image addGestureRecognizer:pan];</span>
拖拽的方法
<span style="font-size:18px;">// 拖拽
- (void)pan:(UIPanGestureRecognizer *)pan{
NSLog(@"拖拽");
//先根据手势找到经过的点
CGPoint p = [pan translationInView:self.image];
//修改视图的transform
self.image.transform = CGAffineTransformTranslate(self.image.transform, p.x, p.y);
[pan setTranslation:CGPointZero inView:self.image];
}</span>
轻扫手势
<span style="font-size:18px;">//6.轻扫手势
// UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipe:)];
// [self.image addGestureRecognizer:swipe];
</span>
轻扫的方法
<span style="font-size:18px;">- (void)swipe:(UISwipeGestureRecognizer *)swipe{
NSLog(@"轻扫");
}</span>
给视图添加一个毛玻璃效果
<span style="font-size:18px;"> //给视图添加一个毛玻璃效果
// UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
// UIVisualEffectView *view = [[UIVisualEffectView alloc]initWithEffect:effect];
// view.alpha = 0.5f;
// view.frame = CGRectMake(0, 0, 150, 150);
//
// [self.image addSubview:view];
// [view release];</span>
关于第一响应者的问题(点击下一项,输入框跳到下一个输入框)
称为第一响应者,textField是持续反应的,button是瞬间的事情
<span style="font-size:18px;">- (BOOL)textFieldShouldReturn:(UITextField *)textField{
if (textField == self.nameView.textField) {
[self.nameView.textField resignFirstResponder];
[self.codeView.textField becomeFirstResponder];
} else if (textField == self.codeView.textField){
[self.codeView.textField resignFirstResponder];
[self.checkView.textField becomeFirstResponder];
} else {
[self.checkView.textField resignFirstResponder];
}
return YES;
}</span>
<span style="font-size:18px;">- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
if(textField.tag == 10000){
[self.labelTextViewPW.textField becomeFirstResponder];
}
else if (textField.tag == 10001){
[self.labelTextViewPWAgain.textField becomeFirstResponder];
}
return YES;
}</span>
屏幕边缘手势
<span style="font-size:18px;">UIScreenEdgePanGestureRecognizer *screen = [[UIScreenEdgePanGestureRecognizer alloc]initWithTarget:self action:@selector(screen:)];
screen.edges = UIRectEdgeLeft;
[self.view addGestureRecognizer:screen];
[screen release];
</span>
方法
<span style="font-size:18px;">- (void)screen:(UIScreenEdgePanGestureRecognizer *)sender{
NSLog(@"ok");
}</span>