У меня есть 2 UITextFields в моем текущем контроллере представления. Проблема, с которой я сталкиваюсь, заключается в том, что когда я заканчиваю sh, набирая текст в одном TextField и пытаюсь переместить курсор в другой, мое приложение не работает.
Я настроил свой контроллер представления для реализации UITextFieldDelegate. Установите для делегата двух TextFields значение self и реализуйте метод textFieldShouldReturn .
Полученное сообщение об ошибке:
[Snapagram.SnapViewController disableEditing: ]: нераспознанный селектор отправлен на экземпляр 0x7fabdc55d700.
Я пытался использовать точку останова Exception, но он возвращается только к 1-й строке AppDelegate. Так что я не знаю, какую часть моего кода размещать. Кроме того, у меня даже нет кода disableEditing в моем коде. У меня вопрос
- как я могу увидеть, какой объект вызывает этот метод
- почему вызывается этот метод, несмотря на то, что я не реализовал его
Редактировать:
это весь код контроллера представления, textFieldShouldReturn внизу.
import UIKit
class SnapViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {
var chosenThread: Thread!
var entry: ThreadEntry!
var post: Post!
var imageToDisplay: UIImage!
@IBOutlet weak var threadCollectionView: UICollectionView!
@IBOutlet weak var createButton: UIButton!
@IBOutlet weak var imageDisplayed: UIImageView!
@IBOutlet weak var captionField: UITextField!
@IBOutlet weak var locationField: UITextField!
@IBOutlet weak var postButton: UIButton!
override func viewDidLoad() {
imageDisplayed.image = imageToDisplay!
super.viewDidLoad()
postButton.layer.cornerRadius = 25.0
createButton.layer.cornerRadius = 25.0
threadCollectionView.delegate = self
threadCollectionView.dataSource = self
captionField.delegate = self
locationField.delegate = self
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return feed.threads.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let index = indexPath.item
let thread = feed.threads[index]
if let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "chooseThreadCell", for: indexPath) as? ChooseThreadCollectionViewCell {
cell.emojiLabel.text = thread.emoji
cell.nameLabel.text = thread.name
return cell
} else {
return UICollectionViewCell()
}
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
chosenThread = feed.threads[indexPath.item]
entry = ThreadEntry(username: feed.username, image: imageToDisplay)
}
@IBAction func createPressed(_ sender: UIButton) {
chosenThread.addEntry(threadEntry: entry)
}
@IBAction func postPressed(_ sender: Any) {
post = Post(location: locationField.text!, image: imageToDisplay, user: feed.username, caption: captionField.text!, date: Date())
feed.addPost(post: post)
}
}
extension SnapViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
self.view.endEditing(true)
return true
}
}