Ste*_*eve 24 iphone uiscrollview uitextfield ios4 ios
我用ScrollView填充了我的视图(与视图大小相同),当用户点击View(或scrollview)中的其他位置时,我仍然坚持如何辞退第一响应者.有关如何做到这一点的任何想法?我正在使用以下方法,但它没有按预期工作:
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
感谢帮助,
斯特凡
Dan*_*eel 82
我在这里找到了答案:链接
如果你的最终目的只是让第一响应者辞职,这应该有效:[self.view endEditing:YES]
这种方法适合它!参考:endEditing:
导致视图(或其中一个嵌入的文本字段)重新签署第一个响应者状态.
And*_*lla 18
要获得更强大,更干净的解决方案,请在主视图中添加轻触手势识别器.
这对于嵌套视图更有效,并且比代码和UI构建器中的秘密按钮更清晰.
在您的视图中加载:
UITapGestureRecognizer* tapBackground = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard:)];
[tapBackground setNumberOfTapsRequired:1];
[self.view addGestureRecognizer:tapBackground];
Run Code Online (Sandbox Code Playgroud)
..并定义要在点击时触发的目标操作:
-(void) dismissKeyboard:(id)sender
{
[self.view endEditing:YES];
}
Run Code Online (Sandbox Code Playgroud)
pab*_*ros 10
对于Swift 3和Swift 4,你可以这样做:
func viewDidLoad() {
super.viewDidLoad()
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.hideKeyboardByTappingOutside))
self.view.addGestureRecognizer(tap)
}
@objc func hideKeyboardByTappingOutside() {
self.view.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)
最好的选择是最短的方式;)
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55496 次 |
| 最近记录: |