2014-11-20 8 views
0

Как я могу реализовать UITextField как в изображении со следующими условиями,UITextField для ввода суммы - как я могу настроить UITextField как на изображении с предоставленными условиями?

  1. Символ $ должен быть на левой стороне.
  2. Символ $ должен появляться только после начала редактирования или если номер уже введен.
  3. Нельзя редактировать, удалять и сфокусировать символ $.

Custom UITextField

+1

Вы можете использовать изображение символа $ и назначить его UITextField.leftView – Jonathan

+1

@ Джонатан: Да :). Это одно решение или хорошее решение, для использования leftView, но не для изображения, нужно будет использовать UILabel вместо этого ... ryt? –

+0

А, да. Это UIView, поэтому вы можете присвоить ему UILabel. Хорошее мышление ... Кроме того, скорее всего, вы можете просто скрыть левый экран, когда textView DidEndEditing и показать его, когда TextView DidBeginEditing. – Jonathan

ответ

0

Во-первых, реализовать UITextFieldDelegate в вашем .h

@interface ViewController : UIViewController <UITextFieldDelegate> 

Далее, установите делегируют UITextField «s вашему ViewController. Затем используйте textFieldShouldBeginEditing, чтобы добавить «$», когда текстовое поле становится первым ответчиком.

@property (strong, nonatomic) IBOutlet UITextField *dollarTextField; 

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
    // if editing the dollarTextField, then insert the $ 
    if (textField == _dollarTextField) { 
     // if the textField is blank, then add the $ 
     if (textField.text.length == 0) { 
      textField.text = @"$"; 
     } 
    } 

    return YES; 
} 

Наконец, реализовать shouldChangeCharactersInRange держать $ в textField.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

    // if editing the dollarTextField 
    if (_dollarTextField) { 
     // set what the new string will be 
     NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 

     textField.text = newString; 

     // if the new string is blank, then set it to the $ 
     if (newString.length == 0) { 
      textField.text = @"$"; 
     } 

     return NO; 
    } 

    return YES; 
} 
+0

Hi..pls проверить это решение, работает для вас ??? –

+0

Yup. Какая часть не работает для вас? –

+0

1. Если сумма уже введена, текстFieldShouldBeginEditing заменит весь текст только «$», 2. Он сможет сфокусировать или удалить «$». –