nic*_*cks 5 objective-c xamarin.ios ios xamarin swift
我有一个UITextField.它工作正常,意味着当按下时,它会触发EditingDidBegin方法等.问题是我无法取消选择它,这意味着键盘将始终可见,覆盖重要控件.我认为默认行为是当用户点击某个不同的地方时取消/隐藏键盘UITextField,例如在它周围的空白区域,但它不是 - UITextField它仍然存在.实现此行为的一个选择是将触摸侦听器添加到UITextFields除此之外的所有内容并在触发时执行手动非聚焦,但出于显而易见的原因,这将是一个可怕的解决方案.
问题是,
UITextFields当用户按下其他控件/"空白区域"时,如何解除对焦?
提议的选项不适用于我需要的Xamarin.iOS.
迅速
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
self.view.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)
目标C.
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}
Run Code Online (Sandbox Code Playgroud)
它将通过点击外部来重新签名textField或textView.
注意:它不会影响scrollView
在滚动视图中
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
tapGesture.cancelsTouchesInView = NO;
[yourScrollView/TableView addGestureRecognizer:tapGesture];
-(void)hideKeyboard {
[textFieldInYourScrollView/TableView resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)
我总是将此添加到我的ViewController
override func viewDidLoad()
{
super.viewDidLoad()
// other stuff
// but to stop editing when the user taps anywhere on the view, add this gesture recogniser
let tapGestureBackground = UITapGestureRecognizer(target: self, action: #selector(self.backgroundTapped(_:)))
self.view.addGestureRecognizer(tapGestureBackground)
}
func backgroundTapped(_ sender: UITapGestureRecognizer)
{
self.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1835 次 |
| 最近记录: |