我已经开发了我的应用程序,在那之后,我发现我需要添加一个Scroll视图并在其中嵌入所有元素。这样做之后,我注意到键盘不会在触摸键盘外部时消失。我之所以知道,是因为IBAction绑定在ViewController上,而不是滚动条上。不过,滚动条不能有任何IBAction。你能帮上忙吗?我已经搜索了很多,在添加了Scroll视图之后,我有点迷失在隐藏键盘上了。这个不应该那么复杂。
谢谢!
发布于 2013-11-18 11:14:40
iOS 7中最干净的方式:
scrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;
Swift版本:
scrollView.keyboardDismissMode = .interactive
发布于 2013-02-07 10:05:51
请尝试以下操作:
UITapGestureRecognizer *yourTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrollTap:)];
[scrollView addGestureRecognizer:yourTap];
[self.view addSubview:scrollView];
然后在
- (void)scrollTap:(UIGestureRecognizer*)gestureRecognizer {
//make keyboard disappear , you can use resignFirstResponder too, it depends.
[self.view endEditing:YES];
}
*值得注意的是,你说你必须将所有元素嵌入到滚动视图中,对吧?,这意味着你已经添加了像UIButton
这样的东西作为滚动视图的子视图,然后当你初始化UIButton
时,你也应该添加动作,所以在scrollTap中只需self.view and :YES就足够了,如果你在UIScrollView
中的某个点按下,如果那个点是UIButton
,它将激活UIButton
的动作,因为当你添加它作为一个子视图时,它会停留在最上层,如果那个点不是一个按钮,那么scrollTap就会被激活。对不起,我没有仔细看过,但它应该像我说的那样。
发布于 2015-03-30 21:46:13
基于@piam的回答,这里是为那些想要快速复制粘贴的人准备的快速版本:
//put this where you initialize your scroll view
var theTap = UITapGestureRecognizer(target: self, action: "scrollViewTapped:")
scrollView.addGestureRecognizer(theTap)
。
//This can go anywhere in your class
func scrollViewTapped(recognizer: UIGestureRecognizer) {
scrollView.endEditing(true)
}
附注:
确保您的文本字段设置如下:
exampleTextField.delegate = self
并在您的类的顶部添加UITextFieldDelegate
class ViewController: UIViewController, UITextFieldDelegate {
https://stackoverflow.com/questions/14742235
复制相似问题