2016-08-11 5 views
3

Я относительно новичок в Swift, и я следую некоторым основным учебным пособиям, но у меня, похоже, проблема с некоторыми методами, которые позволяют пользователю нажать кнопку возврата, чтобы свести к минимуму клавиатуру или щелкнуть клавиатуру, и клавиатура исчезнет, ​​я понимаю, почему я получаю эти ошибки, но понятия не имею, как это сделать, я чувствую, что что-то изменилось в более новой версии Swift, которую я использую, поскольку он использует более старую версию, чем я, может ли кто-нибудь объяснить, как исправить эти две ошибки? Любая помощь будет высоко ценится здесь мой исходный код: (Первая ошибка, значение типа «ViewController» не имеет члена «текста» и во-вторых, метод touchesBegan не отменяет любой метод из суперкласса)Метод Swift не отменяет какой-либо метод из его суперкласса

import UIKit 

class ViewController: UIViewController { 

@IBAction func buttonPressed(sender: AnyObject) { 

    label.text = textArea.text 

} 

@IBOutlet weak var textArea: UITextField! 

@IBOutlet weak var label: UILabel! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    self.text.delegate = self 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { 
    self.view.endEditing(true) 
} 

func textFieldShouldReturn(textField: UITextField!) -> Bool { 

    textField.resignFirstResponder() 

    return true 

} 

} 
+0

Не размещайте код как изображения, убедитесь, что вы создали [MVCE] (http://stackoverflow.com/help/mcve) – Randy

+0

Чтобы это сделать, вы должны реализовать UITextfieldDelegate на своем контроллере. – Brduca

ответ

3

У вас есть 2 проблемы здесь, на основе изображений, размещенных:

1) метод touhesBegan вы используете is not correct:

правильный:

func touchesBegan(_ touches: Set<UITouch>, withEvent event: UIEvent?) 

Yours:

func touchesBegan(touches: NSSet, withEvent event: UIEvent) 

Я думаю, что вам нужен делегат для UITextField, поэтому этот не является corerct: touchhesBegan - это метод для делегата UIReponder, а не для UITextFieldDelegate.

Here вы можете найти ссылку для UITextFieldDelegate.

2) переменная text не существует в вашем коде. Я думаю, вы хотели использовать вместо этого textArea.

Надеюсь, это может вам помочь, счастливое кодирование!

+0

Спасибо! Да, я действительно использовал неправильную функцию, большое спасибо моему другу :) Обе проблемы исправлены. –

+0

Рад слышать :) –

2

В ваше изменение случае следующие вещи:

вместо:

self.text.delegate = self 

изменение:

self.textArea.delegate = self 


override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 

    } 

И делегат добавить как этот

class ViewController: UIViewController, UITextFieldDelegate { 
} 
+0

Ой, я знал, что это будет что-то простое, спасибо, что первая ошибка решена. Я удалил ключевое слово переопределения, но он говорит: «Метод touchhesBegan с селектором Object-C затрагиваетBegan: withEvent конфликты с методом touchhesBegan из суперкласса», который звучит так, будто ему нужно переопределить другой метод. –

+0

@DavidThomlinson check и я изменил: –

+0

Вам нужно изменить метод params в touchhesBegan. –

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