2016-11-22 1 views
0

Я пытаюсь создать наблюдателя, когда указанное текстовое поле заканчивается редактированием, чтобы отключить/включить кнопку, которая пересылает новый segue.Ошибка при создании наблюдателя для текстового поля для включения/выключения кнопки (Swift 3, Xcode 8.x)

В конце концов, я хочу, чтобы кнопка была включена только тогда, когда текстовое поле заполнено и закончено редактирование, что позволит ему перейти к следующему VC.

Ошибка, которая показывает это:

Cannot call value of non-function type '((UITextFieldDelegate) -> (UITextField) -> Bool)?' 

Вот мой исходный код:

import UIKit 

class EmailViewController: UIViewController, UITextFieldDelegate { 

// Back Button Two 

@IBOutlet weak var backButtonTwo: UIButton! 

// Email Header 

@IBOutlet weak var emailSloganLabel: UILabel! 

@IBOutlet weak var emailDescSloganLabel: UILabel! 

// Email Form Entries 

@IBOutlet weak var emailAddressMiniHeader: UILabel! 

@IBOutlet weak var emailAddressTextField: UITextField! 

@IBOutlet weak var emailAddressLineBreak: UILabel! 

// Bottom Bar 'Next' Navigation 

@IBOutlet weak var bottomNextButtonTwo: UIButton! 

@IBOutlet weak var bottomNextLineBreakTwo: UILabel! 




override func viewDidLoad() { 
    super.viewDidLoad() 

    emailAddressTextField.delegate = self 

    emailAddressTextField.addTarget(self, action: #selector(UITextFieldDelegate.textFieldShouldEndEditing("textFieldDidChange:")), for: UIControlEvents.editingChanged) 

} 


internal func textFieldShouldEndEditing(_ emailAddressTextField: UITextField) -> Bool { if self.emailAddressTextField.text == "" { 
    self.bottomNextButtonTwo.isEnabled = false 
} else { 
    self.bottomNextButtonTwo.isEnabled = true 
    } 
    return true 
} 


override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 

} 


// Hide keyboard when user touches the outside keyboard 


    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 
self.view.endEditing(true) 
} 


// Hides keyboard when user pressed the 'Return' Key 

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    emailAddressTextField.resignFirstResponder() 
    return (true) 

} 

} 

Спасибо за любую помощь, я действительно ценю это.

+0

Есть ли причина, почему вы пытаетесь изменить' textFieldShouldEndEditing' из '' UITextFieldDelegate и добавить цель, чтобы указать на это ??? Просто верните его обратно по умолчанию – Tj3n

+0

Нравится? 'emailAddressTextField.addTarget (self, action: #selector (UITextFieldDelegate (textFieldDidChange :)), для: UIControlEvents.editingChanged)' –

+0

удалить 'addTarget' и добавить' func textFieldShouldEndEditing (textField: UITextField) -> Bool', если вы хотите знать когда текстовое поле заканчивается редактированием – Tj3n

ответ

1

Вы должны удалить addTarget, так как он будет конфликтовать с UITextFieldDelegate «s textFieldShouldEndEditing и использовать его непосредственно, чтобы знать, когда текстовое поле отделка editting

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