사용자가 외부를 터치하면 키보드가 사라지는 방법이 궁금합니다 UITextField
.
답변
를 추가 UITapGestureRecogniser
하고보기에 할당 한 다음 UITextField
선택기에서 첫 번째 응답자에게 서명을 요청해야 합니다.
코드:
viewDidLoad에서
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
dismissKeyboard에서 :
-(void)dismissKeyboard
{
[aTextField resignFirstResponder];
}
( aTextField
키보드를 담당하는 텍스트 필드는 어디에 있습니까 )
스위프트 3 버전은 다음과 같습니다
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard (_:)))
self.view.addGestureRecognizer(tapGesture)
dismissKeyboard의 경우
func dismissKeyboard (_ sender: UITapGestureRecognizer) {
aTextField.resignFirstResponder()
}
답변
나는 몇 가지 답변을 으깨었다.
동안 초기화되는 ivar을 사용하십시오. viewDidLoad:
UIGestureRecognizer *tapper;
- (void)viewDidLoad
{
[super viewDidLoad];
tapper = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(handleSingleTap:)];
tapper.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapper];
}
현재 편집중인 내용을 닫습니다.
- (void)handleSingleTap:(UITapGestureRecognizer *) sender
{
[self.view endEditing:YES];
}
답변
이것을 확인하십시오. 이것이 가장 쉬운 방법 일 것입니다.
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self.view endEditing:YES];// this will do the trick
}
또는
이 라이브러리는 스크롤 막대 자동 스크롤, 키보드를 숨길 수있는 탭 공간 등을 처리합니다.
답변
일부 사람들은이 UITapGestureRecognizer
방법을 사용하는 데 문제가있는 것으로 보입니다 . 기존 버튼의 탭 동작을 그대로 유지 하면서이 기능을 수행하는 가장 쉬운 방법은 @ Jensen2k의 답변에 한 줄만 추가하는 것입니다.
[tap setCancelsTouchesInView:NO];
이것은 @Dmitry Sitnikov의 방법을 사용하지 않고 기존 버튼이 계속 작동하도록했습니다.
그것에 대해 읽으 property
십시오 (검색 CancelsTouchesInView
) : UIGestureRecognizer 클래스 참조
일부에 문제가 있음을 알기 때문에 스크롤 막대에서 어떻게 작동하는지 잘 모르겠지만 다른 사람이 내가 가진 것과 동일한 시나리오를 겪을 수도 있습니다.
답변
당신의 수 있도록하는 것이 좋습니다 UIView
의 인스턴스를 UIControl
(인터페이스 빌더)와 그들의 연결 TouchUpInside
이벤트를 dismissKeyboard
하는 방법. 이 IBAction
방법은 다음과 같습니다.
- (IBAction)dismissKeyboard:(id)sender {
[aTextBox resignFirstResponder];
}
답변
스위프트 4
다음 UIViewController
과 같이이 확장 방법으로 설정하십시오 viewDidLoad
:
override func viewDidLoad() {
super.viewDidLoad()
self.setupHideKeyboardOnTap()
}
를 누르면 키보드가 사라집니다 NavigationBar
.
import UIKit
extension UIViewController {
/// Call this once to dismiss open keyboards by tapping anywhere in the view controller
func setupHideKeyboardOnTap() {
self.view.addGestureRecognizer(self.endEditingRecognizer())
self.navigationController?.navigationBar.addGestureRecognizer(self.endEditingRecognizer())
}
/// Dismisses the keyboard from self.view
private func endEditingRecognizer() -> UIGestureRecognizer {
let tap = UITapGestureRecognizer(target: self.view, action: #selector(self.view.endEditing(_:)))
tap.cancelsTouchesInView = false
return tap
}
}
답변
Swift 버전은 다른 요소 (예 : a UIButton
또는 other)와 함께 작동합니다 UITextField
.
override func viewDidLoad() {
super.viewDidLoad()
let tapper = UITapGestureRecognizer(target: self, action:#selector(endEditing))
tapper.cancelsTouchesInView = false
view.addGestureRecognizer(tapper)
}