[英]Hide keyboard on touch outside of textfield
我試圖在屏幕上的任何其他地方觸摸后隱藏鍵盤。 我正在使用的代碼基於這里的答案 。
IBOutlet UITextView *myTextView;
方法:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
if ([myTextView isFirstResponder] && [touch view] != myTextView) {
[myTextView resignFirstResponder];
}
[super touchesBegan:touches withEvent:event];
}
我不明白的是我應該如何將我的UITextField鏈接到touchesBegan
方法。 我需要使用哪個發送的事件? 此外,該方法不應該是IBAction,因為現在我無法將我的UITextField連接到它。
目標C:
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[[self view] endEditing:YES];
}
迅速:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
這是我找到的最好的方式,而且非常簡單。
我應該如何將我的UITextField鏈接到touchesBegan方法。 我需要使用哪個發送的事件? 此外,該方法不應該是IBAction,因為現在我無法將我的UITextField連接到它。
因為你沒有。 您必須在文本字段為子視圖的視圖上覆蓋此方法。
我所做的是將整個UIView類更改為UIControl。
這為您提供了一個touchDown事件,您可以鏈接到resignFirstResponder的方法。
UIControl仍然為您提供UIView的所有功能。
-(IBAction)backgroundTap:(id)sender
{
[text1 resignFirstResponder];
[text2 resignFirstResponder];
[textLogin resignFirstResponder];
[textPassword resignFirstResponder];
} // Resign all responders
- (void)viewDidLoad
{
//for keybord hide when touch outside:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(hidekeybord)];
[self.view addGestureRecognizer:tap];
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
-(void)hidekeybord
{
[_yourtextfield.txt resignFirstResponder];
}
In .h
@property (nonatomic, assign) id currentResponder;
In .h
//in viewDidLoad:
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignOnTap:)];
[singleTap setNumberOfTapsRequired:1];
[singleTap setNumberOfTouchesRequired:1];
[self.view addGestureRecognizer:singleTap];
//Implement the below delegate method:
- (void)textFieldDidBeginEditing:(UITextField *)textField {
self.currentResponder = textField;
}
//Implement resignOnTap:
- (void)resignOnTap:(id)iSender {
[self.currentResponder resignFirstResponder];
}
嘗試快速而骯臟的方式:
按一個按鈕並將其鏈接到一個動作方法(讓我們稱之為背景)。 拉伸按鈕使其覆蓋整個視圖。 調整視圖的圖層,以便只有用戶通過觸摸進行交互的內容才會位於按鈕的頂部。 將按鈕類型更改為自定義,這使按鈕不可見。 在方法Background中關閉firstResponder。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.