UIScrollView不能响应touch事件,而我们在开发中,往往由于keyboard的上移,遮住输入框,所以相应的对UIScrollView的content移动。具体效果参考ios qq的新版登录界面。为了用户手指点击UIScrollView,收回键盘,需要对UIScrollView添加touch事件的相应。具体最发很多种,最简单的做法,添加一个UIScrollView的category,声明touche的方法,在controller中设置UIScrollView的UIScrollViewDelegate,实现category定义方法。具体代码如下:
@implementation UIScrollView (UITouch)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if(!self.dragging){
[[self nextResponder] touchesBegan:touches withEvent:event];
}
}
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
if(!self.dragging){
[[self nextResponder] touchesMoved:touches withEvent:event];
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if(!self.dragging){
[[self nextResponder] touchesEnded:touches withEvent:event];
}
}
@end
在controller中引入
#import "UIScrollView+UITouch.h",并设置UIScrollView的delegate为controller
在controller重写category中的方法即可让scrollview响应touch事件。