-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

在有全屏侧滑的情况下,页面上有个slider需要左右滑动的时候,经常在滑动slider的时候页面也跟着滑动

  

解决办法一:关闭当前页面的全屏侧滑,开启系统侧滑

self.fd_interactivePopDisabled = YES;  //关闭全屏侧滑
self.navigationController.interactivePopGestureRecognizer.enabled = YES;  //开启系统侧滑 

解决办法二:if (点击事件在slider上) {

关掉全屏侧滑;

} else {

开启全屏侧滑;

}

View上

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
  UIView *hitView = [super hitTest:point withEvent:event];
  if (hitView == _mySlider) {
    _sliderBlock11(YES);
    return hitView;
  } else {
    _sliderBlock11(NO);
    return nil;
  }
}

ViewController上

__weak ViewController *weakSelf = self;sliderV.sliderBlock11 = ^ (BOOL aaa){
    weakSelf.fd_interactivePopDisabled = aaa;
};

Demo:http://i.cnblogs.com/Files.aspx 

时间: 2024-10-09 16:54:15

-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event的相关文章

模拟UIView的hitTest:方法和pointInside:方法的实现

对于UIView 的两个方法的讲解: - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 网上对这两个方法的讲解很多,但是大部分是纯文字的描述,我不再赘述,需要可以自己百度"UIView hitTest"等等. 我现在根据我的理解,把这两个方法的源码实现模拟出来. 注意:这里只是模拟,是为了让

UITableView/UIScrollView 不能响应TouchBegin 的处理 及窥见 hitTest:withEvent:

重写touchBegin 方法是不行的,在UITableView/UIScrollView 解决方案 重写hitTest:withEvent:  在他们的子类中 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { static UIEvent *e = nil; if (e != nil && e == event) { e = nil; return [super hitTest:point withEvent:

点击事件处理, 以及hitTest:withEvent:实现

发送触摸事件后, 系统会将事件添加到系统UIApplication的事件管理队列中 UIApplication会在事件队列的最前端取出事件,然后分发下去,以便处理, 通常会把事件首先分发给KeyWindow处理 KeyWindow会在视图层次中找到一个最合适的视图来处理触摸事件,这也是处理事件过程的第一步. 找到合适的视图后, 就会调用视图控件的相应方法 touchesBegan- touchesMoved- touchedEnded- 如果父控件不能接受事件, 那么子控件就不能接受事件. 一个

UIView 的hitTest 添加屏蔽层 但不影响下一层操作

当需要 屏蔽层的某一部分可以相应  其他部分响应下一层时  可以   这样 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { UIView *hitView = [_backView hitTest:[self convertPoint:point toView:_backView] withEvent:event]; if (hitView) { return hitView; } else { return nil

hitTest:withEvent源码分析

// 什么时候调用:只要事件一传递给一个控件,那么这个控件就会调用自己的这个方法 // 作用:寻找并返回最合适的view // UIApplication -> [UIWindow hitTest:withEvent:]寻找最合适的view告诉系统 // point:当前手指触摸的点 // point:是方法调用者坐标系上的点 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { //1.判断下窗口能否接受事件 if (s

UIView属性

UIView属性 autoresizingMask 自动调整子控件与父控件中间的位置,宽高. UIViewAutoresizingNone就是不自动调整. UIViewAutoresizingFlexibleLeftMargin 自动调整与superView左边的距离,保证与superView右边的距离不变. UIViewAutoresizingFlexibleRightMargin 自动调整与superView的右边距离,保证与superView左边的距离不变. UIViewAutoresiz

UIView 实例方法 Instance Methods(转)

好了,我接着上篇,开始我们的对UIView 实例方法的探索 UIView 实例方法 Instance Methods 初始化一个视图 - (id)initWithFrame:(CGRect)aRect //用指定的frame 初始化一个视图对象 结束视图中的编辑状态 - (BOOL)endEditing:(BOOL)force //这个在弹回键盘时特别有用 关于响应 - (void)addGestureRecognizer:(UIGestureRecognizer *)gestureRecogn

UIView中常见的方法总结

addSubview: 添加一个子视图到接收者并让它在最上面显示出来.- (void)addSubview:(UIView *)view[讨论]这方法同样设置了接收者为下一个视图响应对象.接收者保留视图.如果你使用removeFromSuperview方法用来把视图移除他的显示列表,那么视图将会被释放.如果你想要在视图移除显示列表後保留并使用这个视图(如果,举个例子,你想要交换一些视图的位置.),你不许保留那个视图在他调用removeFromSuperview前. bringSubviewToF

UIView的剖析

前面说过UIViewController,但是UIView也是在MVC中非常重要的一层 .正是因为UIView是Iphone下所有界面的基础,所以官方专门写了一个文档“View Programming Guide for iOS”.通过这个可以很好的了解UIView的功能. 先来看看官方API的解释:The UIView class defines a rectangular area on the screen and the interfaces for managing the conte