2010-12-17 19 views
11

Hangi textfield/view/etc ifadesi ne olursa olsun klavyeyi gizlemek için genel resignFirstResponder yapmanın bir yolu var mı?IPad, hangi Textfield'ı açtığını bilmeden klavyeyi kapatır.

Sebep benim görünümünde çok fazla textfields var ve klavyeyi gizlemek için tüm textfields için resignFirstResponder'a sahip olmak istemiyorum. Sadece bir genel

[self resignFirstResponder]'u isteyin.

Herhangi bir fikrin var mı? Daha varken kendi uygulamasında

-(void)dismissKeyboard { 
    [firstField becomeFirstResponder]; 
    [firstField resignFirstResponder]; 
} 

cevap

3

Bunu yapmanın en kolay yolu içinde

sayesinde şuna benzeyen Klavyeyi kapatmak istediğinizde için bir yöntem sahip olmaktır tek bir metin alanı yerine ve hangi alanlardan hangisini aradığına bakılmaksızın klavyeyi ortadan kaldırmak istedim, bir yöntem yazdım ve her birini resignFirstResponder.

Bir programcı olarak, görünüm denetleyicinizde kaç tane metin alanının bulunduğunu ve bunlara nasıl erişebileceğinizi açık bir şekilde bilmeniz gerekir, aksi halde sorun giderilir ve uygulama iyi görünmez. .: -P

1

: peşin

19

Bunun zaten yanıtlanmış olarak işaretlendiğini biliyorum, ancak bunu yaptığım gibi çalışmaya başladığım için, aşağıdaki yöntemi yalnızca metin alanlarını içeren görünümde kullanabilirsiniz.

- (BOOL)endEditing:(BOOL)force 

Bu yöntem geçerli görünümde ve halen ilk savunan olan metin alanı için kendi Subview hiyerarşisi bakar. Bir tane bulursa, metin alanının ilk yanıtlayıcı olarak istifa etmesini ister. Kuvvet parametresi YES olarak ayarlanmışsa, metin alanı asla sorulmaz; istifa etmek zorunda kaldı. biz görünümü tıkladığınızda UIView Documentation

[self.view endEditing:YES]; 

o klavyeyi gizler.

+2

Bu, @ Jumhyn –

1

Sen bu soruları kontrol edebilirsiniz: Özetle

: Seçtiğiniz başka şeye becomeFirstResponder çağırabilir. UIViewController veya UIView olabilir. Daha önce benzer bir problem yaşadım, ilk kontrolörün hangi textfield olduğunu bilmeden, görüntü denetleyicimi arayana geri gönderirken klavyemi kapatmam gerekiyordu. Sonra, geri dönmekte olduğum görüntüleyici denetleyicimin görünümünde, kendimi [firstFirstResponder] olarak adlandırdım ve itilmiş görünümün klavyesi gitmişti.

[[[UIApplication sharedApplication] keyWindow] endEditing:YES]; 

bu olmadan küresel Klavyeyi kapatmak olacaktır: Bu yapılan Çünkü hangisi metin alanı o ilk savunan

5

Sen kodunun altına yardımıyla UITextField/UITextView herhangi bir ilişkisi olmayan klavyeyi sayabilirsiniz olmanın gevşek oldu referans.

Bunun size yardımcı olacağını umuyorum.

+1

'dan çok daha iyi bir yanıttır. Teşekkürler, bu her durum için çalışır (UITableViewController dahil) – marcelosalloum

İlgili konular