為 UIScrollView 添加點(diǎn)擊事件,從而實(shí)現(xiàn) scrollview 上的點(diǎn)擊背景退出編輯狀態(tài)。
直接代碼呈上:
一、先要支持協(xié)議 UIGestureRecognizerDelegate
二、為你需要添加點(diǎn)擊事件的 scrollview 添加點(diǎn)擊手勢(shì)
// 對(duì) srcollView 添加點(diǎn)擊響應(yīng)
UITapGestureRecognizer *sigleTapRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(clickBackView)];
sigleTapRecognizer.delegate=self;
sigleTapRecognizer.numberOfTapsRequired = 1;
[_baseScrollView addGestureRecognizer:sigleTapRecognizer];
三、點(diǎn)擊后的處理 ----- 這里是點(diǎn)擊 scrollview 上空白處才進(jìn)行處理
// 點(diǎn)擊背景取消所有編輯狀態(tài)
-(void)clickBackView
{
NSLog(@" 點(diǎn)了一下背景 ");
[_baseScrollView endEditing:YES];
}
#pragma mark UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
// 輸出點(diǎn)擊的 view 的類(lèi)名
NSLog(@"%@", NSStringFromClass([touch.view class]));
// 若為 ScrollView 的點(diǎn)擊事件才響應(yīng),scrollview 上的 UIButton、UILabel 啥的點(diǎn)了也不會(huì)進(jìn)哦
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UIScrollView"]) {
return YES;
}
return NO;
}