iOS UIScrollView不能响应TouchBegin事件的处理方法:
原因:UIView的Touch事件被UIScrollview捕获了,所以UIView里面的Touch事件没有响应——————解决方法:将UIScrollview的捕获的Touch事件往上传;————给UIScrollview添加类别:UIScrollView+UITouch.h
代码:
#import "UIScrollView+UITouch.h"
@implementation UIScrollView (UITouch)
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[[self nextResponder] touchesBegan:touches withEvent:event];
[super touchesBegan:touches withEvent:event];
}
-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[[self nextResponder]touchesMoved:touches withEvent:event];
[super touchesMoved:touches withEvent:event];
}
-(void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[[self nextResponder]touchesEnded:touches withEvent:event];
[super touchesEnded:touches withEvent:event];
}
@end
app上线之后因为这个报了一个错:
[__NSCFBoolean objectForKey:]: unrecognized selector sent to instance 0x19fee40b0 (null)
解决办法:在在UIScrollView上面加一个UIView,通过在view上面的手势来改变键盘,代码如下:
UITapGestureRecognizer*tapView=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapInTouchView)];
tapView.numberOfTapsRequired=1;
tapView.numberOfTouchesRequired=1;
[self.touchView addGestureRecognizer:tapView];