2014-09-20 11 views
62

Bir sohbet arabirimi olan iOS8 için bir uygulamayı güncellemeye çalışıyorum, ancak yeni Quicktype klavye metin görünümünü gizliyor, bu yüzden program aracılığıyla veya arayüz oluşturucuda kapatmak istiyorum .iOS8 Quicktype Klavye'yi UITextView üzerinde programlı olarak devre dışı bırakma

Aygıt ayarlarında bir şekilde veya yalnızca kullanıcıların kapatması mümkün mü?

UITextfield ile bu sorunu çözen bir soru/cevap olduğunu biliyorum, ancak bir UITextView ile yapmam gerekiyor. Ben temiz bir yaklaşım tho olsaydı

- (void)disableQuickTypeBar:(BOOL)disable 
{ 
    self.autocorrectionType = disable ? UITextAutocorrectionTypeNo : UITextAutocorrectionTypeDefault; 

    if (self.isFirstResponder) { 
     [self resignFirstResponder]; 
     [self becomeFirstResponder]; 
    } 
} 

:

+1

Ben yine iyi bir fikir gibi görünmüyor yapabilirsiniz ya da değil, ama olup olmadığını bilmiyorum. Android'de benzer bir şey yapan bir uygulama kullanıyorum ve gerçekten sinir bozucu. Kullanıcının bu önerileri ister istemez istemediğine karar vermesi için etrafta çalışmak daha iyi olur. – Hassan

+1

@Hassan Benim sorunum, UI'mizi yok etmektir, bu yüzden herhangi bir öneriyi saklamak/devre dışı bırakmak istiyorum. – rihe

+0

Evet, ancak önizlemeyi gizlemek yerine, metin görünümünü klavyeyi yerleştirmek için yukarı taşıyabilirseniz daha iyi olmaz mıydı? Yine özür dilerim çünkü bunu nasıl yapacağımı bilmiyorum, sadece arkadaşça bir öneride bulunuyordum. – Hassan

cevap

5

aşağıdaki yöntemi ile bir UITextView kategori sınıfı oluşturduk. Ayrıca, otomatik düzeltme modunun her metin görünümü için her zaman doğru olmayabilecek Default olduğunu varsayar.

114

Sen devre dışı bırakabilir klavye önerileri/tamamlama/QuickType aşağıdaki satırı ile

bu örnekte görüldüğü gibi 4S gibi küçük ekranlı metni engelleyebilen bir UITextView için:

myTextView.autocorrectionType = UITextAutocorrectionTypeNo; 

enter image description hereenter image description here

Ve daha youd ancak böyle 4S

hedefleme gibi belirli bir ekranda bunu yapmak isterseniz
if([[UIDevice currentDevice]userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
    CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height; 
    if (screenHeight == 568) { 
     // iphone 5 screen 
    } 
    else if (screenHeight < 568) { 
     // smaller than iphone 5 screen thus 4s 
    } 
} 
+1

UITextAutocorrectionTypeNo, iPhone 6'da çalışmıyor - iOS 8.1 – iGW

+2

@iGW bunu UITextView veya UITextField zaten ilk Yanıtlayıcıdan sonra yaptım, bu benim için de çalışmadı. Bundan önce ayarlamayı veya istifa ve beFirstResponder'i tetiklemeyi deneyin (eskiden açıkça "doğru" ve bunu yapmanın daha uygun bir yolu). –

+0

Referans için, bir UIWebView? –

47

Bütünlük için, bunu Interface Builder'da da yapabildiğinizi eklemek istiyorum.

UITextField veya UITextView Klavye Öneriler devre dışı bırakmak için - Attributes Inspector yılında No için Correction ayarlayın. Swift 2'de

enter image description here

+0

Bu benim için işe yaramadı QuickType önerisi hala bunu yaptığımda klavyem için görüntülendi. Ancak programatik yanıt benim için işe yaradı. –

+0

Bu sizin için işe yaramadı çünkü gariptir; çünkü aslında ne yapar? AutocorrectionType UITextAutocorrectionTypeNo' için.Kodda yaptığınız aynı şey.Bir doublecheck ve behavi eğer değişmez, Xcode ve iOS'un hangi sürümlerini kullandığınızı söyleyin? –

+1

Bu benim için çalıştı (Xcode 6.3 beta 2). –

1

:

myUITextField.autocorrectionType = UITextAutocorrectionType.No 
+0

iPad'de çalışmıyor. – Dmitry

İlgili konular