2016-03-07 1 views
1

Я новичок в Swift, и я внедряю небольшую форму в решение. У меня есть три UITextFields, и я хочу сделать так, чтобы, если я набираю слово и затем набираю «пробел», курсор переместится на следующий UITextField (т. Е. Он помешает вам ввести более одного слова в поле) ,Обнаружение, если «пробел» был введен в UITextField, и переход к следующему UITextField

Если бы я должен был это сделать, как бы я это сделал?

Я думал, что я должен переписать

textField(_:shouldChangeCharactersInRange:replacementString:) 

метод - это правильно?

Спасибо!

+0

Кажется разумным. Почему бы вам не попробовать? Вот как большинство из нас рисует этот материал. –

+0

Кроме того, не забудьте подумать о том, что вы хотите сделать, если диапазон находится в середине текущей строки и/или 'replacementString' вставлен и содержит пробел. –

+0

Я думаю, что это может быть неправильный метод, потому что я не хочу менять символы, просто не добавляйте больше, когда я нажимаю клавишу пробела. @PhillipMills – neX

ответ

0

Попробуйте

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 
    // Get your textFields text 
    let str = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string) 

    // Check if the last character is a space 
    // If true then move to the next textfield 
    if str.characters.last! == " "{ 
     print("SPACE!") 
     textField2.becomeFirstResponder() 
    } 
    else{ 
     print(str.characters.last!) 
    } 

    return true 
} 
+0

Привет, Рашван, спасибо за этот ответ. Я посмотрю, как это работает - он работает для первого слова, но бросает исключение, когда я перехожу к следующему - (я использую три UITextFields). – neX

+0

Вы уверены, что все делегаты текстовых полей установлены? – penatheboss

+0

@neX, я создал образец проекта для вас, с которым вы можете работать. Вы можете скачать его [здесь] (https://www.dropbox.com/s/y4jiny4ev8kpeki/Test.zip?dl=0). –

0

Попробуйте это,

@IBOutlet weak var textField1: UITextField! 
@IBOutlet weak var textField2: UITextField! 
@IBOutlet weak var textField3: UITextField! 

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { 
let str = (textField.text! as NSString).stringByReplacingCharactersInRange(range, withString: string) 

if str.characters.last! == " “{ 
     if textField == textField1{ 
      textField2.becomeFirstResponder() 
     } else if textField == textField2{ 
      textField3.becomeFirstResponder() 
     } else if textField == textField3{ 
        // do what you want 
      } 
} 
return true 
} 
Смежные вопросы