iOS 关于 视图手势遮挡的问题 10C

我在做一个图片剪切的功能, 视图结构是, 底层有一个 scrollView用来存放 ImageView 展示图片并且提供图片的放大缩小的功能,这个应该是 捏和手势,然后在 scrollview 的上面添加了一个小一号的视图,用来充当窗口,截取窗口里面的内容,现在的问题是由于上层的 视图需要一个拖拽手势所以不能设置用户交互为 NO, 这样的话,上层的 View 就是遮挡住下面的 ScrollView 的 捏合手势,这个地方请问大家怎么处理

2个回答

有没有考虑谁是第一响应者?

qq_22955427
DeviL_NSLog 回复凉白开不好喝:我觉得你要做的功能类似微信更改头像那样的
2 年多之前 回复
u013052086
凉白开不好喝 考虑到了, 重写 hitTest这个方法重新设置响应对象,但是我这个不太合适,因为我的上层的 View 并不是不响应,而是不响应捏合手势,所以,这个方法好像也不行,现在还没有找到解决方案,
2 年多之前 回复

这个问题啊,有两个办法。
1、在你需要截图的时候,再添加这个UIView,不需要的时候remove,切记写成属性并用strong修饰,不然会被release
2、将捏合手势添加到这个UIView上,以此来处理scrollView的变化,但是这里有太多细节需要处理。主要是放大位置的问题
建议使用第一种方法。简单有效,避免了复杂的运算。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
iOS 词典手势和视图
ios中汉英词典 视图控制器和手势的例子
ios关于手势
UIKit中包含了UIGestureRecognizer类,用于检测发生在设备中的手势。UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,它有下面一些子类用于处理具体的手势: 1、拍击UITapGestureRecognizer (任意次数的拍击) 2、向里或向外捏UIPinchGestureRecognizer (用于缩放) 3、摇动或者拖拽UIPanGestureRecognizer 4、擦碰UISwipeGestureRecognizer (以任意方向) 5、旋转UIRotationGestureRecognizer (手指朝相反方向移动) 6、长按UILongPressGestureRecognizer
iOS 添加透明罩时遮挡后面控件手势的问题
问题:要实现一个简单的夜间模式,简单的方法可以在KeyWindow上加一个半透明的view,但是这个view遮挡住了后面页面的手势了,需要处理一下。这就用到了事件的传递和响应者链。 一、事件的传递和响应者链 一个完整的点击过程包括两个过程,先找到能响应该点击事件的控件,然后通过响应者链响应事件。寻找响应控件是从父控件到子控件的自上而下的过程。 一个点击事件的传递是从父控件往子控件传递的。从...
视图手势
-
iOS 子视图屏蔽父视图手势
父视图要实现手势协议UIGestureRecognizerDelegate - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ([touch.view isDescendantOfView:想要哪个子视图屏蔽该手势]) { ...
ios软件开发 获取手势点击视图的tag
代码实现如下: - (void)viewDidLoad { [super viewDidLoad]; for (int i = 0; i < 3; i ++) { UIView *view = [[UIView alloc] initWithFrame:CGRectMake(20 + (100 + 17) * i, 100, 100, 50)];
iOS集成可手势签名的视图
1.h文件设置可供外界调用的方法 #import @interface MyView : UIView @property(copy,nonatomic)NSString *tagStr; // get point  in view -(void)addPA:(CGPoint)nPoint; -(void)addLA; -(void)revocation; -(void)
ios 手势拖拽问题
怎么样给view添加手势之后,让view跟着手指移动,而不是当手指不在view上时还会移动,总是出现view移动比手指移动的快,怎样设置能让它跟着手指移动,始终和手指保持一致呢?
ios 当键盘出现遮挡视图 视图上移Bug
在做iOS开发时,当键盘出现 遮挡了视图的输入框 按照常理 把视图的y坐标上移 当收键盘时在还原视图的原来位置.        CGRect textViewFrame = textView.frame;         int offset = textViewFrame.origin.y-(_backScrollView.frame.size.height-216.0);        
ios手势
一、以下为移动、缩放、旋转、点击手势: #import &amp;lt;UIKit/UIKit.h&amp;gt; @interface ViewController : UIViewController&amp;lt;UIGestureRecognizerDelegate&amp;gt; @property (weak, nonatomic) IBOutlet UIImageView *imageView; ...
iOS手势
iOS手势
iOS UI03_登陆+注册 UI1~3系统归纳
完成登陆系统(登陆、注册、找回密码),使用容器视图控制器实现。 定义容器视图控制器ContainerViewController,指定为window的根视图控制器。 定义LoginViewController、RegistViewController、PasswordViewController,三个视图控制器的根视图添加到容器视图控制器的根视图。 // // AppDelegate.m //
iOS 手势
iOS的手势方法
ios 手势
手势在ios开发中应用非常的广泛,我这里就不在说那几种手势的具体用法了,这里只借用Pan这个平移来说明平移的状态追踪的使用方法,很简单但是很少用所以就很少注意到直接上代码,不喜欢多说- (void)MovieViewPan:(UIPanGestureRecognizer *)pan { if (pan.state == UIGestureRecognizerStateBegan) {
IOS手势
1.如果一个控件继承 UIControl ,不用添加手势,自带target,本身自带点击事件。2.所有控件都可以添加手势 [控件 addGestureRecognizer: (UIGestureRecognizer *) ]3.IOS中系统提供的手势有哪些? UILongPressGestureRecognizer (长按识别器) UIRotationGestureReco
iOS 手势
1、UIGestureRecognizer介绍 手势识别在iOS上非常重要,手势操作移动设备的重要特征,极大的增加了移动设备使用便捷性。 iOS系统在3.2以后,为方便开发这使用一些常用的手势,提供了UIGestureRecognizer类。手势识别UIGestureRecognizer类是个抽象类,下面的子类是具体的手势,开发这可以直接使用这些手势识别。 UITapGestur
iOS 手势(下)
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIView* view = [[UIView alloc]initWithFrame:self.view.frame]; view.fr
关于iOS 的手势滑动返回功能
现在默认的iOS app都支持手势滑动返回功能 ,但是如果自定义了导航栏之后  手势滑动返回功能就会失效 怎样才能在自定义了导航栏之后手势滑动返回功能还能使用呢?可以这样设置 在NavigationController的viewDidLoad函数中添加如下代码 - (void)viewDidLoad {     [super viewDidLoad];         __w
ios软件开发 解决删除cell视图遮挡删除按钮的问题
今天在项目中遇到一个问题,就是删除自定义cell时,cell下面的删除按钮视图被遮挡的了。如果是向左滑动删除视图没有任何影响,如果是通过下面的方法则会出现遮挡的问题 - (void)setEditing:(BOOL)editing animated:(BOOL)animated; 解决办法: 在自定义cell类中添加如下代码即可解决遮挡的问题 - (void)layou
导航栏控制器遮挡视图
iOS7.0后系统,使得self.view中的视图在设置frame时,会被导航栏控制器遮挡,即frame.y的计算不是从导航栏控制器下面开始计算,而是从屏幕左上角开始计算。所以为了解决这个问题,可以在添加如下代码进行解决。 // 通常写在base类的loadView方法中 // iOS7.0后,显示在导航栏之下,即frame.y从导航栏下面开始算起 if ([self respondsToSel
iOS导航栏遮挡问题的总结
一.背景:在做开发的时候经常不经意就出现导航栏遮挡主视图的情况,之前出现这种情况我会先看看View UI Hierarchy,然后把视图的坐标手动调整,例如把视图的y坐标写成64(建议封装成宏,因为有刘海的手机状态栏和导航栏的高度之和不是64),即减去状态栏和导航栏的高度之和,这个方法是可行的,但是不适用所有的场景。不同的场景应该采用不同的解决方案,要想找到最合适的解决方案,就必须去研究其中的原理...
ios 软键盘遮挡输入框的问题
// 点击评论输入框 $(document).on("click", ".content_title", function () { // 使用定时器是为了让输入框上滑时更加自然 setTimeout(function(){ document.body.scrollTop = d...
视图添加移动手势
-(void)createMoveImageView {     _moveImageView=[[UIImageView alloc]initWithImage:[_backgroundImageView.image blurredImageWithRadius:20 iterations:10 tintColor:nil]];     _moveImageView.userI
IOS:按钮添加手势问题
我用2个for循环创建了30 个按钮 10行 3列, 现在要在按钮上加一个长按手势,应该怎么去找哪个按钮是被长按手势点击的那个![图片说明](https://img-ask.csdn.net/upload/201605/04/1462341209_964110.png)
iOS手势以及手势冲突问题
今天研究了一下iOS手势,手势包括点击,拖动,扫动,长按,捏合,旋转手势,下面上代码#define WIDTH [UIScreen mainScreen].bounds.size.width #define HEIGHT [UIScreen mainScreen].bounds.size.height@property (nonatomic,strong)UIImageView * image; @
iOS添加手势遇到的问题
NSArray *increaseColorButtonArray = @[self.increaseRedButton, self.increaseGreenButton, self.increaseBlueButton, self.increaseWhiteButton]; UILongPressGestureRecognizer *increaseLongPr...
iOS导航栏遮挡
在iOS开发中UINavigationViewController是一个非常重要的控件, 可是有时候使用时会导致导航栏遮挡视图的问题,(比如先做好约束,后添加导航栏的时候就有可能)。 当我在视图中添加一个tableview和一个collectionView的时候,遮挡问题如下图: 解决办法: 1.在使用storyboard做布局的时候,一开始就设置top bar为有导航栏的(如下图
关于animation动画遮挡的问题
我在java代码动态生了textview但是为什么给textview增加translateAnimation时rntextview之间相互遮挡呢rn[code=java]rnmainActivity.javarnpackage com.example.popstar;rnrnimport java.util.ArrayList;rnimport java.util.Random;rnrnimport android.os.Bundle;rnimport android.view.View;rnimport android.widget.TableLayout;rnimport android.widget.TableRow;rnimport android.widget.TextView;rnimport android.app.Activity;rnrnpublic class MainActivity extends Activity rn rn private TextViewAnimation textViewAnimation;rnrn private TableLayout tableLayout;rn rn private int[] colorArray = new int[100]; //用于存放所有textView的drawIdrn private int colorArrayCursor = 0; rn rn private ArrayList selectId = new ArrayList(); //用于存放和点击的id周围颜色相同的idrn rn @Overridern protected void onCreate(Bundle savedInstanceState) rn super.onCreate(savedInstanceState);rn setContentView(R.layout.activity_main);rn rn tableLayout = (TableLayout) findViewById(R.id.tablelayout);rn this.tableLayout(tableLayout);rn rn textViewAnimation = new TextViewAnimation();rn// for(int i=0;i<100;i++)rn TextView textView = (TextView) findViewById(99);rn textViewAnimation.textViewAnimation(textView);rn// rn rn rn //新建TableRow并加入tableLayoutrn public void tableLayout(TableLayout tableLayout)rn for (int row = 0; row < 10; row++) rn TableRow tableRow = new TableRow(this);rn for (int col = 0; col < 10; col++) rn TextView textView = this.new_textview(row,col);rn tableRow.addView(textView);rn rn tableLayout.addView(tableRow);rn rn rnrn // 新建TextViewrn public TextView new_textview(int row,int col) rn TextView textView = new TextView(this);rn textView.setId(row*10+col);rn textView.setTextAppearance(this, R.style.textview);rn textView.setLayoutParams(new TableRow.LayoutParams(45, 45));rn int random = getRandom(5);rn if (random == 0) rn textView.setBackgroundResource(R.drawable.red);rn this.add_colorArray(R.drawable.red);rn else if (random == 1) rn textView.setBackgroundResource(R.drawable.blue);rn this.add_colorArray(R.drawable.blue);rn else if (random == 2) rn textView.setBackgroundResource(R.drawable.green);rn this.add_colorArray(R.drawable.green);rn else if (random == 3) rn textView.setBackgroundResource(R.drawable.zi);rn this.add_colorArray(R.drawable.zi);rn else if (random == 4) rn textView.setBackgroundResource(R.drawable.yellow);rn this.add_colorArray(R.drawable.yellow);rn rn textViewOnClick(textView);rn return textView;rn rnrn // 产生一个随机数rn public int getRandom(int max) rn return new Random().nextInt(max);rn rnrn // textView鼠标单击事件rn public void textViewOnClick(TextView textView) rn textView.setOnClickListener(new TextView.OnClickListener()rn public void onClick(View v)rn if(selectId.size()>=2) rn for(int i=0;i=2) rn for(int i=0;i=0)&&(colorArray[id]==colorArray[top_id])&&noexist_id(top_id))rn this.selectId(top_id);rn this.add_selectId(top_id);rn rn if((bottom_id<=99)&&(colorArray[id]==colorArray[bottom_id])&&noexist_id(bottom_id))rn this.selectId(bottom_id);rn this.add_selectId(bottom_id);rn rn if((left_id%10!=9)&&(left_id>0)&&(colorArray[id]==colorArray[left_id])&&noexist_id(left_id))rn this.selectId(left_id);rn this.add_selectId(left_id);rn rn if((right_id%10!=0)&&(colorArray[id]==colorArray[right_id])&&noexist_id(right_id))rn this.selectId(right_id);rn this.add_selectId(right_id);rn rn rn rn //判断该id不在selectId数组中rn public boolean noexist_id(int id)rn boolean flag = false;rn for(int i=0;i
关于遮挡层的问题
我想要一个遮挡层,就是当我点了一个button的时候,出来一个遮挡层,把下边的button了一些内容都遮挡了,就是不能操作了,然后遮挡层上面可以在设计视图里边随意的拖拉控件,而且可以有button事件,就是onclick,这个事件不是js事件,是在后台那里。aspx.cs这里边的,找了好多都不好用,本人有点菜,需紧急实现这个功能,有知道的告诉下,或者给个网址,可以实现这个功能的给分,全给
请问如何解决视图遮挡菜单的问题?
我的视图以及菜单是动态加载的,但加载的视图遮挡了菜单,应该如何解决?rn
iOS7之后视图被导航栏遮挡问题
在开发iOS7的界面的时候,有时候你会发现UIViewController里的subView有时会被导航栏遮盖,原因是iOS7鼓励全屏布局,UIViewController中的self.view的坐标原点是从导航栏的原点开始算起。 解决办法: 方法1.设置self.window的frame时用applicationFrame  - (BOOL)application:(UIApplica
如何解决视图遮挡菜单?
我的视图和菜单都是动态加载的,但菜单总是被视图遮挡,如何解决?rn
iOS 手势的创建方法
常用几大手势的创建方法 /** * 手势: 1.点击手势 -- UITapGestureRecognizer 2.长按手势 -- UILongPressGestureRecognizer 3.拖拉手势 -- UIPanGestureRecognizer 4.捏合手势 -- UIPinchGestureRecognizer ...
iOS触摸手势——UITouch
Demo实例 UITouch,主要是重写四个方法(触摸开始、触摸移动、触摸结束、触摸退出)以实现触摸响应方法  1、触摸开始 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { }  2、触摸移动 - (void)touchesMoved:(NSSet *)touches withEve
iOS 手势添加及冲突解决
例子: 设置一个背景视图  DoModalView = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];  DoModalView.backgroundColor = [UIColor colorWithRed:0.3 green:0.3 blue:0.3 alpha:0.6];     
iOS 手势与点击事件冲突的解决方案
问题描述:当页面内容加载失败时展现可以点击重新加载的错误页(点击重新加载使用的是单击手势),当页面重新加载成功出现tableViewCell后,移除错误页,但点击页面仍然响应单击手势,而不是响应cell的点击效果。 解决方案
ios 旋转手势
//    UIRotationGestureRecognizer *rota =[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(toucheAction:)]; //    [self.view addGestureRecognizer:rota]; // 
iOS 六种手势
1.点击手势 -(void)testTap{     UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dealTap:)];     [_imageView addGestureRecognizer:tap]; } -(void)
iOS手势类的简单使用
// 单击 UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(signalTapAction:)]; // 需要触碰的次数 singleTap.numberOfTouchesRequired = 1; //
iOS拖动手势(pan)
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(imageViewTap:)]; pan.minimumNumberOfTouches = 1; pan.delegate = self;
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数