2015-08-07 19 views
21

Kullanıcı yazarken klavyenin "dönüş" işlevinden kurtulmak istiyorum, bu nedenle yeni satırlar yok, bunun yerine ben istiyorum 'Bitti' olarak işlev görecek 'dönüş' tuşu, böylece klavyeyi gizler.UITextView öğesinde 'Geri' düğmesi işlevini 'Bitti' olarak değiştirin

Düzenlenebilir bir UITextView kullanıyorum, bu sayede kullanıcı yazılarını yazabiliyor ve ana zaman çizelgesine gönderebiliyor, ancak sabit hücreleri olduğum için kullanıcının bunu yapmasını istemiyorum. 'return' tuşuna basın ve yayınları zaman çizelgesinin aralığı dışında olur. Ben sadece bir UITextView o yapmanın bir yolu var olup olmadığını bilmek ya da en azından gizlemek mümkün istedim

Yani
func textFieldShouldReturn(textField: UITextField!) -> Bool { 
    textField.resignFirstResponder() //if desired 
    return true 
} 

:

Ben UITextField ile çalışır, ancak UITextView ile bu tespit yeni bir satır oluşturmak yerine, klavyenin geri döndürülmesi durumunda.

textField.returnKeyType = UIReturnKeyType.Done 

Güncelleme Kesinlikle yukarıda belirtildiği gibi, hiç "Bitti" dönüş anahtarı ayarlamak aynı yaklaşımı kullanabilirsiniz :

cevap

57

Metin alanına dönüş anahtar tipini ayarlayabilirsiniz. Ancak, UITextView, kullanıcı dönüş tuşuna bastığında bir geri arama sağlamamaktadır. (: UITextView, shouldChangeTextInRange aralığı: NSRange, replacementText metin: TextView'un String) bir çözüm olarak, TextView'un işlemek için deneyebilirsiniz temsilci çağrı ve yeni bir satır Karakter girişini algıladığında Klavyeyi kapatmak:

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { 
    if (text == "\n") { 
     textView.resignFirstResponder() 
    } 
    return true 
} 
+0

Bu, klavyeyi gizlemek için "İade" düğmesinin işlevini değiştirdi. Daha fazla yeni satır yayınlamıyor. Teşekkür ederim! –

1

birçok kodları denedim ve nihayet bu Swift 3.0 Son [Mart 2017] benim için çalıştı bu çalışma bu kodu yapmak için "UITextFieldDelegate" miras edilmelidir

"ViewController" sınıfı UITextFields kullanılarak elde etti.

class ViewController: UIViewController,UITextFieldDelegate 

Uygun Etiket numarası ile Metin alanı ekleyin ve bu etiket numarası kendisine atanmış artan etiket numarasına göre uygun metin alanına kontrol altına almak için kullanılır. Yukarıdaki kodda
override func viewDidLoad() { 

    userNameTextField.delegate = self 
    userNameTextField.tag = 0 
    userNameTextField.returnKeyType = .next 
    passwordTextField.delegate = self 
    passwordTextField.tag = 1 
    passwordTextField.returnKeyType = .go 
} 

, "returnKeyType = UIReturnKeyType.next" da vb "Git/Katıl" gibi diğer seçenekler var "Sonraki" olarak gösterilecek Tuş takımı Enter tuşuna yapacak dayalı senin uygulama değerleri değiştirir.

Bu "textFieldShouldReturn", UITextFieldDelegate tarafından denetlenen bir yöntemdir ve burada Etiket değeri artışına dayalı olarak bir sonraki alan seçimine sahibiz.

func textFieldShouldReturn(_ textField: UITextField) -> Bool 
{ 
    if let nextField = textField.superview?.viewWithTag(textField.tag + 1) as? UITextField { 
     nextField.becomeFirstResponder() 
    } else { 
     textField.resignFirstResponder() 
     return true; 
    } 
    return false 
} 
+0

@ Sanf0rd: "UIReturnKeyType" sınıf adını kaldırmak ve sadece ".go" veya ".next" olarak kullanmak için düzenlemenizi takdir ediyor ve kabul ediyorum, çünkü bunlar statik özelliktedir. Okuyucuların kullandığımız "UIReturnKeyType" sınıfını bilmelerine yardımcı olmak için açıkça kullandım, böylece sınıftaki diğer mevcut mülk seçeneklerini (google, yahoo, send, emergencyCall vb ...) kontrol edebilirler. Bu iyi mi yoksa sınıf adını kaldırmayı düşünüyorsunuz. –

+0

Bu cevap UITextFields içindir, ancak soru UITextView – BJHStudios

+0

ile ilgilidir. Evet, bu sadece denedim ve çalışıyorum alternatif bir seçenek olan UITextFields kullanılarak elde edilir. –

İlgili konular