2014-12-08 3 views
1

Я чувствую, что настройка UITextField s - это больше работы, чем должно быть. Приложение, в котором я сейчас работаю, содержит небольшое количество текстовых полей:Установка уровня UITextField высокого уровня/семантики

  • Ввод электронной почты - никогда не используется и используется клавиатура электронной почты.
  • Ввод пароля - никогда не исправляет, использует стандартную клавиатуру, скрывает ввод.
  • Текст заголовка - исправляет, использует стандартную клавиатуру, заглавные буквы первой буквы.
  • Другой текст - исправляет, использует стандартную клавиатуру, заглавные буквы первой буквы предложения.

... и это в основном это.

Таким образом, вместо того, чтобы:

[self.txfPassword setSecureTextEntry: YES]; 
[self.txfPassword setAutocorrectionType: UITextAutocorrectionTypeNo]; 
[self.txfPassword setAutocapitalizationType: UITextAutocapitalizationTypeNone]; 
[self.txfPassword setSpellCheckingType: UITextSpellCheckingTypeNo]; 
[self.txfPassword setKeyboardType: UIKeyboardTypeDefault]; 

Я хотел бы сделать:

[self.txfPassword setPurpose: UITextFieldPurposePassword]; 

Есть какой-то встроенный в вещь, что делает это, или я собираюсь быть катиться самостоятельно?

В идеале, это будет построен в так что:

  • Когда IOS видит, что я работаю с, скажем, адрес электронной почты, он будет предлагать ввести электронные письма из адресной книги, а также может выполните правильную проверку.
  • Или ручка твитера/идентификатор FB обеспечит поиск в моих друзьях, а затем в других общеизвестных тождествах.
  • Или, если я использую пароль, он предложит создать случайную строку и пощекотать ее в цепочке ключей.
  • Или, если это номер телефона, он может посмотреть, что в адресной книге и т.д.

Спасибо.

+0

Наверняка вам нужно использовать категорию или подкласс для 'UITextField'. И еще много вспомогательных классов, которые могут выполнять скрытые функции и только возвращать желаемый результат, чтобы показать, когда есть текстовый ввод. – Kampai

+0

* nods * Это то, что я ожидаю - я просто немного ошеломлен, что это не встроенная вещь в какой-то степени, или что не существует известной хорошей библиотеки, которая это делает. – Benjohn

+1

Я просто надеюсь, что кто-то плавает до сих пор. – Kampai

ответ

2

Вы можете легко создать категорию для такого рода вещи ...

// .h 
typedef NS_ENUM(NSUInteger, TextFieldPurpose) { 
    TextFieldPurposePassword, 
    TextFieldPurposeEmail, 
    TextFieldPurposeBlah, 
}; 

@interface UITextField (Purpose) 

- (void)setPurpose:(TextFieldPurpose)purpose; 

@end 

// .m 
@implementation UITextField (Purpose) 

- (void)setPurpose:(TextFieldPurpose)purpose 
{ 
    switch(purpose) { 
     case TextFieldPurposePassword: 
      [self setPasswordPurpose]; 
      break; 
     case TextFieldPurposeEmail: 
      [self setEmailPurpose]; 
      break; 
     case TextFieldPurposeBlah: 
      // set some other purpose 
      break; 
    } 
} 

- (void)setEmailPurpose 
{ 
    // do your email set up here... 
} 

- (void)setPasswordPurpose 
{ 
    [self setSecureTextEntry: YES]; 
    [self setAutocorrectionType: UITextAutocorrectionTypeNo]; 
    [self setAutocapitalizationType: UITextAutocapitalizationTypeNone]; 
    [self setSpellCheckingType: UITextSpellCheckingTypeNo]; 
    [self setKeyboardType: UIKeyboardTypeDefault]; 
} 

@end 

Теперь вместо того, чтобы делать все, что конфигурации на вашем текстовом поле вы просто должны #import UITextField+Purpose.h", а затем ...

[self.txfPassword setPurpose:TextFieldPurposePassword]; 
+0

Hiya. Спасибо за ответ.Я дал вам передо мной, но я оставил его открытым какое-то время, так как мне хотелось бы узнать, есть ли какие-либо другие предложения (особенно для библиотеки, которая предоставляет некоторые дополнительные моменты, на которые я надеялся). Для начальных требований в вопросе категория является хорошим решением. В результате я создал менеджера для набора текстовых полей (для правильного поведения возвращаемого ключа и т. Д.), Который также обеспечивает семантическую настройку и проверку на основе семантики использования. – Benjohn

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