2013-06-04 4 views
1

Я создаю приложение и требую ввести цену. клиенту нужна собственная дизайнерская клавиатура, поэтому я разрабатываю следующую клавиатуру. он работает отлично. Проблема в том, что текст больше, чем UITextField, а затем отображает точки. Я ищу в google и SO, но ничего не нашел.
how to avoid dots next to a uitextfield
How to remove dots in UITextfield? и другие ответы, но не работают в моем случае. Когда я использовал клавиатуру по умолчанию это прокручивать текст, что я ввода номераУдалить точку из UITextField

Мой ключ плата

enter image description here

когда длина больше, то TextFied Ширина затем отображать

enter image description here

Мой код:

 - (IBAction)numberPressed:(id)sender { 
     UIButton *btn=(UIButton *)sender; 
     int number=btn.tag; 

     if (number <= 9) 
      txtPrice.text = [NSString stringWithFormat:@"%@%d",txtPrice.text, number]; 
     //decimal point 
     else if (number == 10) { 
      if ([txtPrice.text rangeOfString:@"."].location == NSNotFound) 
       txtPrice.text = [NSString stringWithFormat:@"%@.", txtPrice.text]; 
      } 
     //0 
     else if (number == 11) 
      txtPrice.text = [NSString stringWithFormat:@"%@0", txtPrice.text]; 
     //backspace 
     else if (number == 12) { 
      if ([txtPrice.text length] > 0) 
       txtPrice.text = [txtPrice.text substringToIndex:[txtPrice.text length] - 1]; 
      else 
       txtPrice.text = @""; 
     } 
    } 


    #pragma mark - 
    #pragma mark -TextField Delegate Method 

    -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
     [self showKeyboard]; 
     return NO; // Hide both keyboard and blinking cursor. 
    } 

    - (BOOL)textFieldShouldEndEditing:(UITextField *)textField 
    { 
     return YES; 
    } 
+0

Вы используете 'UITextField' или' UILabel'? «UILabel» автоматически обрезает содержимое, когда они становятся слишком длинными. – Greg

+0

Что вы хотите отображать? – kushyar

+0

@PartiallyFinite Спасибо за повтор, я использовал UITextField –

ответ

0

Если вы хотите, подобное поведение как калькулятор или приложение телефона, вы должны установить следующее свойство истинно (YES):

textField.adjustsFontSizeToFitWidth = YES; 

Вы также должны установить свойство minimumFontSize в «, чтобы предотвратить приемник от уменьшения размера шрифта до точки, где он больше не читается ».

Отъезд UITextField Reference

+0

Я использовал UITextField не UILabel –

+1

lineBreakMode не работает для UITextField – NiravPatel

+0

@NiravPatel благодарит, исправил его. – kushyar

1

UITextField специально только одна линия. Так что независимо от того, UITextField большой, когда он достигнет конца, он будет отображать точки.

Для отображения и редактирования текста multiline вам необходимо использовать UITextView вместо UITextField.

В Interface Builder добавьте UITextView, где вы хотите, и выберите «редактируемый». По умолчанию это будет multiline.

Я думаю, это поможет вам.^_^

+0

Нет, он не отображает точки. но прокрутите символ .... –

+0

в порядке, это единственный способ избежать отображения точек. Используйте UITextView, который поддерживает многострочные линии. Удачи!! – Atrash

+0

@MKAlatrash Я бы не сказал, что это единственный способ, но я, вероятно, сделаю это так и поработаю с несколькими строками, но если пользователь действительно захочет придерживаться 'UITextField', тогда им придется идти на' kushyar', но, скорее, все позже они снова окажутся в том же положении, что и снова будет соответствовать минимумуFontSize. – Popeye

-4

Что вы можете сделать, это

txtPrice.text = [txtPrice.text stringByReplacingOccurrencesOfString:@"." withString:@""]; 

дайте мне знать, что она работает или нет !!!

Happy Coding !!!

+0

может кто-нибудь сказать мне, почему это неправильно? – NiravPatel

+0

Это не сработает, так как он получает слово. Поэтому, когда длина достигает определенной длины, вы получите «3534 ...», но когда вы сделаете «txtPrice.text», он даст полный текст. -1 для неправильного ответа. – Popeye

+0

вся программа заключается в удалении точек, и мой код просто удаляет точки, а не цифры, поэтому я думаю, что это правильно ... – NiravPatel

1

Вы можете попробовать это:

self.txtPrice.font = [UIFont systemFontOfSize: 14.0]; 
self.txtPrice.adjustsFontSizeToFitWidth = YES; 
self.txtPrice.minimumFontSize = 7.0; 

«adjustsFontSizeToFitWidth» является логическим значением, указывающим, следует ли размер шрифта быть уменьшен, чтобы соответствовать строке текста в прямоугольник текстового поля.

«minimumFontSize» - это размер наименьшего допустимого шрифта, с помощью которого можно нарисовать текст текстового поля.

0

Другой подход (Удалить точку и клип текст в кадр) -

Ваш может удалить точку из UITextField вызова следующий код

[self.yourTextField becomeFirstResponder];

вы также можете скрыть клавиатуру по умолчанию [если вы используете какой-либо пользовательской клавиатуры], используя следующий код

// Скрыть клавиатуру для набора номера Pad, но показывают мигающий курсор UIView * dummyKeyboardView = [[UIView Alloc] initWithFrame: CGRectMake (0, 0, 1, 1)]; yourTextField.inputView = dummyKeyboardView; [dummyKeyboardView release];

Но я думаю, что ответ IlNero лучше для вас, если вы хотите показать весь текст (не клип).

Смежные вопросы