2014-12-03 9 views
7

Ich setze den UIKeyboardType als UIKeyboardTypeNumberPad auf meinem UITextFields. Dies ermöglicht dem Benutzer jedoch nur die Eingabe positiver Ganzzahlen. Ich brauche den Benutzer, um negative oder positive ganze Zahlen eingeben zu können. Gibt es einen UIKeyboardType, der identisch mit UIKeyboardTypeNumberPad ist, aber auch das "-" (minus) Symbol enthält, und wenn nicht, gibt es eine Möglichkeit, das zu erstellen?Gibt es einen UITextField-Tastaturtyp, der wie ein Nummernblock funktioniert, aber negative Zahlen zulässt?

Danke.

+0

erstellen Sie Ihre individuelle Tastatur – Sport

+0

Andere Option, fügen Sie ein (-) Minus-Taste als eine inputAccessoryView. Oder seid glücklich mit: UIKeyboardTypeNumbersAndPunctuation –

+0

@OnikIV Wie füge ich eine Minus-Schaltfläche als InputAccessoryView hinzu? – AndyW

Antwort

7

Ärgerlich wie es ist, gibt es keine solche Systemtastatur. Abgesehen von der Erstellung einer benutzerdefinierten Tastatur ist Ihre beste Wette UIKeyboardTypeNumbersAndPunctuation und Sie müssen eine gültige numerische Eingabe erzwingen.

+1

UIKeyboardTypeDecimalPad scheint jedoch keine Minus-Schaltfläche zu haben. Für die Ordentlichkeit würde ich wollen, dass es nur die Schlüssel sind, die benötigt werden, also muss ich in die Schaffung eines benutzerdefinierten schauen. – AndyW

+0

Hoppla, ich meinte eigentlich UIKeyboardTypeNumbersAndPunctuation, aber kopiert/eingefügt die falsche. Bearbeitete die Antwort. – Clafou

+0

In diesem Fall mache ich das gerade, aber es sieht ein wenig mit der ganzen Interpunktion aus und man kann sogar auf diese Tastatur umschalten. – AndyW

2

Fügen Sie ein Minus als accesoryView hinzu, Sie müssen Ihr textField als Eigenschaft haben, in diesem Beispiel ist diese Eigenschaft: myTextField;

Sie müssen hinzufügen, nach dem Erstellen Ihrer myTextField diesen Code, B.E. in viewDidLoad:

 UIView *inputAccesoryView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 40)]; 
// It´s good idea a view under the button in order to change the color...more custom option 
inputAccesoryView.backgroundColor = [UIColor whiteColor]; 

UIButton *minusButton = [[UIButton alloc] initWithFrame:CGRectMake(([UIScreen mainScreen].bounds.size.width-150)/2, 5, 150, 30)]; 
// configure the button here... you choose. 
[minusButton setTitle:@"-" forState:UIControlStateNormal]; 
[minusButton addTarget:self action:@selector(changeNumberSing) forControlEvents:UIControlEventTouchUpInside]; 
[inputAccesoryView addSubview:minusButton]; 

self.myTextField.inputAccessoryView = inputAccesoryView; 

und die Methoden dieser Schaltfläche in Ihrem Viewcontroller hinzu:

-(void)changeNumberSing 
{ 
if ([self.myTextField.text hasPrefix:@"-"]) 
{ 
    self.myTextField.text = [self.myTextField.text substringFromIndex:1]; 
}else 
{ 
    self.myTextField.text = [NSString stringWithFormat:@"-%@",self.myTextField.text]; 
} 
} 
+0

Das funktioniert! Ich musste nur die Farbe des Knopftitels auf Schwarz setzen, um den Text zu sehen. Dies ist über der Tastatur, obwohl es möglich ist, es über die linke untere Kachel der Tastatur zu haben (was ist ein leerer Platz für diesen Tastaturtyp)? – AndyW

+0

Nein. Sie können über der Tastatur zeichnen. (ZB ändern Sie das 'y' der Taste, und die Taste wird über der Tastatur sein). Aber es wird kein Ereignis erhalten. –

+0

Das ist nervig. Danke für Ihre Hilfe! – AndyW