[英]Detect when taps are outside of a UITextView
我正在開發具有各種UITextView
的程序。 我遇到的問題是,我無法檢測到用戶何時在UITextView
之外點擊,以便隱藏鍵盤。 我嘗試了各種操作,但是都沒有用。
我在操作中使用的代碼:
@IBAction func touchOutsideTextField(sender: UITextField)
{
sender.resignFirstResponder()
}
我應該怎么做才能隱藏鍵盤呢?
您可以為此使用UITapGestureRecognizer
。
在視圖中添加TapGesture,然后在點擊視圖時隱藏時間鍵盤。
這是適合您的示例代碼。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var text: UITextView!
@IBOutlet weak var text2: UITextView!
@IBOutlet weak var text3: UITextView!
@IBOutlet weak var text4: UITextView!
override func viewDidLoad() {
super.viewDidLoad()
let aSelector : Selector = "touchOutsideTextField"
let tapGesture = UITapGestureRecognizer(target: self, action: aSelector)
tapGesture.numberOfTapsRequired = 1
view.addGestureRecognizer(tapGesture)
}
func touchOutsideTextField(){
self.view.endEditing(true)
}
}
或者,如果您想嘗試這種方式,可以使用touchesBegan
方法為其添加此代碼。
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
self.view.endEditing(true)
}
使用此代碼,您無需添加UITapGestureRecognizer
。
您可以選擇此選項之一。
對於仍在使用Obj C的用戶,以下是翻譯:
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];
[self.view endEditing:TRUE];
}
蘋果在他們的文檔中說,如果您省略對super的調用,那么您還必須覆蓋其他觸摸方法...即使您不使用它們。 有關更多信息,請參見以下鏈接: touchesBegan:withEvent:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.