关于UIScrollView响应touchesBegan和touchesEnd

ViewController中,常用touch事件关闭编辑事件,收起键盘。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.view endEditing:YES];

}

但是addSubview的UIScorllView并不能直接响应touchesBegan和touchesEnd事件。

因此需要继承UIScrolleView类,并重写方法。

@interface myScrollView : UIScrollView
@end 
-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
  [super touchesBegan:touches withEvent:event];
  if ( !self.dragging ) {
  [[self nextResponder] touchesBegan:touches withEvent:event];
  }
} 

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
  [super touchesEnded:touches withEvent:event];
  if ( !self.dragging ) {
      [[self nextResponder] touchesEnded:touches withEvent:event];
    }
} 

使用重写过的UIScrollView就可以通过传递事件,来响应这两个方法。

这个问题背后反应的是iOS的Responder chain (响应链)。

参考:http://mobile.51cto.com/hot-404894.htm

     Responder Chain(ios事件传递)

iOS中的触摸事件和手势处理

IOS开发之手势——UIGestureRecognizer 共存

时间: 2024-12-15 02:55:13

关于UIScrollView响应touchesBegan和touchesEnd的相关文章

UITableView是不会响应touchesBegan:方法的

UITableView是不会响应touchesBegan:withEvent:之类的UIResponder的方法的.因此,加在其上的所有视图的响应者链就断了.如果在UITableView其上加任何的自身不具备类似UIButton一样有目标动作机制的UIView及其子类控件的时候,这个控件也不会响应touchesBegan:withEvent:方法.即便是设置该控件的userInteractionEnabled为YES也没用. 如此一来,如果想要这些控件具有交互性能怎么办?有一种很直观的方法,给这

uitableview的空白处不能响应 touchesbegan 事件

现在的uitableview 的上面  响应不了     touchesbegan 事件   可能算是苹果的一个bug吧,不知道以后会不会改变 今天试了好久  都不行  最后  写了个字类  继承自  tableview 结果  可以响应事件了, 但是  上面的cell  也跟着响应这个事件, 真是坑爹啊

UIScrollView 与 touchesBegan 冲突解决方法

给UIScrollView写一个延展 .h文件实现: @interface UIScrollView (NSFoundation) @end .m文件实现 @implementation UIScrollView (ScrollTouch) //重写touchesBegin方法 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //主要代码实现: [[self nextResponder] t

iOS开发--从TQRichTextViewDemo中学会分析工程

下载地址: http://code4app.com/ios/TQRichTextView/5244fe9c6803fa0862000000 1.首先找到AppDelegate类,无论一个工程有多么复杂,多么多的类,但入口只有一个就是AppDelegate类的didFinishLaunchingWithOptions方法.我们阅读别人源代码的时候可以从这里入手.在TQRichTextViewDemo工程中,这个方法中仅创建了一个TQViewController并设置为window的rootView

iOS UIScrollView不能响应TouchBegin事件的处理方法:

原因:UIView的Touch事件被UIScrollview捕获了,所以UIView里面的Touch事件没有响应——————解决方法:将UIScrollview的捕获的Touch事件往上传:————给UIScrollview添加类别:UIScrollView+UITouch.h 代码: #import "UIScrollView+UITouch.h" @implementation UIScrollView (UITouch) -(void)touchesBegan:(NSSet<

UIScrollView无法响应touch事件的解决方法

用过UIScrollView的都会发现UIScrollView不会响应touch事件,这样就无法在touches相关的方法中做一些事情了,比如收回键盘等等.其实写个categroy就可以解决这个问题了. 具体实现如下: @implementation UIScrollView (UITouchEvent) - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { [[self nextResponder] touches

touchesBegan: withEvent: &lt;--- with UIScrollView / UIImageView

touchesBegan: withEvent: / touchesMoved: withEvent: / touchesEnded: withEvent: 等只能被UIView捕获(如有问题请指出对请指出,路过的大牛请勿喷),当我们创建 UIScrollView 或 UIImageView 时,当点击时UIScrollView 或 UIImageView 会截获touch事件,导致touchesBegan: withEvent:/touchesMoved: withEvent:/touches

UIScrollView不能响应touch事件的解决办法

UIScrollView本身事是不支持touch的,我们可以给她添加拓展 #import "UIScrollView+util.h" @implementation UIScrollView (util) -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ [[self nextResponder] touchesBegan:touches withEvent:event];

IOS UIScrollView中 使用 touch 无法响应的问题

添加一个 Category  然后在使用到 UIScrollView 的文件里面 导入这个头文件 就可以 // //  UIScrollView+UITouch.m //  alarm // //  Created by zhuang chaoxiao on 15-6-16. //  Copyright (c) 2015年 zhuang chaoxiao. All rights reserved. // #import "UIScrollView+UITouch.h" @impleme