Daha zarif bir yol, kullanıcı klavyenin çerçevesinin dışında bir yere dokunduğunda klavyeyi kapatmaktır.
İlk olarak, ViewController görünümünüzü UIBuilder'daki kimlik denetçisindeki "UIControl" sınıfına ayarlayın. Görünümü, ViewController başlık dosyasına sürükleyip sürükleyin ve İçeride Rötuş olarak etkinlikle bir eylem olarak ilişkilendirin:
ViewController.h
-(IBAction)dismissKeyboardOnTap:(id)sender;
Ana ViewController dosyasında ViewController.m:
-(IBAction)dismissKeyboardOnTap:(id)sender
{
[[self view] endEditing:YES];
}
Benzer teknikleri kullanarak çift dokunma veya uzun dokunma gerekebilir. ViewController'ınızı bir UITextViewDelegate olarak ayarlamanız ve TextView'i ViewController'a bağlamanız gerekebilir. Bu yöntem hem UITextView hem de UITextField için çalışır.
Kaynak: Big Nerd Ranch
DÜZENLEME: Ayrıca bir UIScrollView kullanıyorsanız, yukarıdaki tekniğin Arayüz Oluşturucu aracılığıyla kolayca çalışmayabileceğini eklemek istiyorum. Bu durumda, bir UIGestureRecognizer kullanabilir ve bunun yerine [[self view] endEditing: YES] yöntemini çağırabilirsiniz. Örnek olarak şunlar verilebilir:
-(void)ViewDidLoad{
....
UITapGestureRecognizer *tapRec = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(tap:)];
[self.view addGestureRecognizer: tapRec];
....
}
-(void)tap:(UITapGestureRecognizer *)tapRec{
[[self view] endEditing: YES];
}
Kullanıcı klavyenin dışına dokunduğunda ve bir giriş alanına dokunmadığında, klavye kapanacaktır.