Я создал собственный класс UICollectionReusableView
следующим образом:
protocol ReviewFooterDelegate: NSObjectProtocol {
func submitReviewDelegate(text: String, rating: Float)
}
class ReviewFooterCell: UICollectionReusableView {
@IBOutlet var text: UITextView!
@IBOutlet var submitButton: UIButton!
@IBOutlet var rating: CosmosView!
@IBOutlet var problem: UITextField!
var reviewFooterDelegate: ReviewFooterDelegate!
@IBAction func submitButtonPressed(_ sender: Any) {
reviewFooterDelegate.submitReviewDelegate(text: self.text.text, rating: Float(rating.rating))
}
}
Я пытаюсь добавить UITapGestureRecognizer
к UITextField
, чтобы отобразить UIPickerView
, эточто у меня есть в моем контроллере, который использует этот пользовательский класс:
В моем viewForSupplementaryElementOfKind
методе:
let footerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "ReviewsFooter", for: indexPath) as! ReviewFooterCell
footerView.reviewFooterDelegate = self
let problemGesture = UITapGestureRecognizer(target: self, action: #selector(problemTapped))
footerView.problem.addGestureRecognizer(problemGesture)
return footerView
А вот метод problemTapped:
@objc func problemTapped(sender : UITapGestureRecognizer) {
pickerView.delegate = self
pickerView.dataSource = self
let toolBar = UIToolbar()
toolBar.barStyle = UIBarStyle.default
toolBar.isTranslucent = true
toolBar.sizeToFit()
let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItem.Style.plain, target: self, action: #selector(ProfessionalReviews.donePicker))
doneButton.tintColor = UIColor(red: 30.0 / 255.0, green: 53.0 / 255.0, blue: 94.0 / 255.0, alpha: 1.0)
let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: UIBarButtonItem.Style.plain, target: self, action: #selector(ProfessionalReviews.cancelPicker))
cancelButton.tintColor = UIColor(red: 30.0 / 255.0, green: 53.0 / 255.0, blue: 94.0 / 255.0, alpha: 1.0)
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.isUserInteractionEnabled = true
/*
problem.inputAccessoryView = toolBar
view.addSubview(problem)
problem.inputView = pickerView
problem.becomeFirstResponder()
*/
}
И теперь я застрял в том, что делать дальше, как бы я установил UITextField
в своем пользовательском классе в качестве первого респондента?
Хочу ли я установить жест в своем классе вместо контроллера?(если так, как?), а затем использовать другой метод делегата, который вызывается при вызове моих методов donePicker или cancelPicker для получения возвращаемого значения в контроллере?