簡體   English   中英

檢測水龍頭何時在UITextView之外

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM