在scrollView上面,如果add一個(gè)textField或者textView,在控件是第一響應(yīng)者的時(shí)候,直接點(diǎn)擊scrollView,touchesBegan是不會(huì)響應(yīng)的。
原理如下:
UIScrollView 的工作原理,當(dāng)手指touch的時(shí)候,UIScrollView會(huì)攔截Event,會(huì)等待一段時(shí)間,在這段時(shí)間內(nèi),如果沒(méi)有手指 沒(méi)有移動(dòng),當(dāng)時(shí)間結(jié)束時(shí),UIScrollView會(huì)發(fā)送tracking events到子視圖上。在時(shí)間結(jié)束前,手指發(fā)生了移動(dòng),那么UIScrollView就會(huì)進(jìn)行移動(dòng),從而取消發(fā)送tracking。
可以用下面的方法解決問(wèn)題:
- (void)viewDidLoad {
[super viewDidLoad];
self.myScroll.delegate = self;
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touchScrollView)];
[recognizer setNumberOfTapsRequired:1];
[recognizer setNumberOfTouchesRequired:1];
[self.myScroll addGestureRecognizer:recognizer];
}
- (void)touchScrollView
{
[self.myTextView resignFirstResponder];
}
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注