2012-09-29 23 views
10

Mam UITextField, który wyświetla tylko wartości numeryczne (0-9,., -). Gdy użytkownik wybierze zawartość pola tekstowego, pojawi się menu z "kopiuj", "wklej" i "zdefiniuj". Ponieważ pole tekstowe wyświetla tylko wartości liczbowe, nie chcę wyświetlać opcji "zdefiniuj". Jak wyłączyć słownik "zdefiniować" opcję w UITextField?Wyłączanie "Definiuj" w UITextField

Edit: mam rozwiązać ten i pisał roztworu poniżej

+0

Coś [tutaj] (https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITextInputTraits_Protocol/Reference/UITextInputTraits. html # // apple_ref/occ/intf/UITextInputTraits)? –

+0

Nie mogłem znaleźć rozwiązania. Jakieś szczegóły? – amirfl

+5

Nie rozumiem, dlaczego to pytanie było "zamknięte, a nie prawdziwe pytanie". W każdym razie znalazłem rozwiązanie. Subklassed UITextField i overided "- (BOOL) canPerformAction: (SEL) akcja zSender: (identyfikator) nadawca". Zwracając "NO" do if (action == @ selektor (defineSelection :)), opcja "define" została usunięta z UIMenuController – amirfl

Odpowiedz

-2

Spróbuj tego:

UITextField* textField = //...; 
textField.autocorrectionType = UITextAutocorrectionTypeNo; 
+1

Ustawiam właściwość" korekta "na" NIE ", a także wypróbowałem powyższą sugestię w kodzie, ale nadal mam opcję" zdefiniuj "menu. – amirfl

+0

Czy możesz udostępnić kod, w którym ustawisz właściwość na "NIE"? – Stunner

+0

Jest na XIB. Wypróbowałem również twoją sugestię i ustawę autokorektę na UITextAutocorrectionTypeNo bezpośrednio w kodzie. Użyłem: UITextField * unitValue = (UITextField *) [cell viewWithTag: 1001]; unitValue.autocorrectionType = UITextAutocorrectionTypeNo; – amirfl

-1

Jeśli używasz NIB, ustaw "poprawka" własność UITextField do "NIE" (Wartością domyślną jest TAK).

Jeśli używasz kodu, ustaw "autocorrectionType" jako "UITextAutocorrectionTypeNO".

+1

Ponownie, nie zapobiega to wyświetlaniu "Definiuj" w menu podczas wybierania zawartości pola tekstowego. – amirfl

+0

Myślę, że twoje pytanie jest niejasne i nie mamy pojęcia, co chcesz zrobić ... Nie chcesz, aby opcja "Definiuj" pojawiła się po długim naciśnięciu słowa zainteresowania? Zdefiniowanie, które wykonuje wyszukiwanie w słowniku? – Stunner

+0

To dokładnie to. Dziękuję Ci. rozwiązać już, patrz wyżej. – amirfl

2

rozwiązanie w obszarze komentarza pytanie nie działa dla mnie (systemów iOS 8), mam błąd z:

action == @selector(defineSelection:)

udało mi się usunąć „określenie” z menu edycji przez określania wymaganych opcji chciał umieścić w menu:

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender { 
    if (action == @selector(copy:) || 
     action == @selector(selectAll:)) { 
     return true; 
    } 

    return false; 
} 

pełniejsza odpowiedź na: How to disable copy paste option from UITextField programmatically (dziękuję serge-K)

5

Swift - iOS 8

Można to zrobić przez instacji UITextField i przesłanianie canPerformAction:WithSender metody.

class MyTextFieldWithoutDefine: UITextField { 
    override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool { 
     if action == "_define:" { 
      return false 
     } 

     return super.canPerformAction(action, withSender: sender) 
    } 
} 

Lista wszystkich działań:

cut: 
copy: 
select: 
selectAll: 
paste: 
delete: 
_promptForReplace: 
_transliterateChinese: 
_showTextStyleOptions: 
_define: 
_addShortcut: 
_accessibilitySpeak: 
_accessibilitySpeakLanguageSelection: 
_accessibilityPauseSpeaking: 
makeTextWritingDirectionRightToLeft: 
makeTextWritingDirectionLeftToRight: 
+1

Wielkie dzięki za wpisanie wszystkich dostępnych akcji. Testowane w iOS 9.3 przy użyciu Obj-C – Laszlo

+0

Nie ma za co! :) –