ios - UIView textFieldShouldReturn 不起作用
问题描述
据我所知,我在功能方面遇到了一些问题,textFieldShouldReturn
当在键盘上按下回车键时应该调用它,但事实并非如此。我试图在谷歌和这里搜索解决方案,但没有找到解决问题的答案,因为我有基金的网页上的大多数答案都是 3 岁或以上,而这些解决方案并没有太大帮助。
我在函数中设置UIView
了委托的地方使用它,并且我尝试了其他一些可以工作的委托函数,所以我不知道为什么它不工作。textField
awakeFromNib()
textViewDidChangeSelection
这是 xib 文件的外观
这是我用作弹出窗口的代码:
import UIKit
class CuePointPopup: UIView,UITextFieldDelegate,UITextViewDelegate
{
@IBOutlet var labelCueNumberInImage: UILabel!
@IBOutlet var labelCueNumber: UILabel!
@IBOutlet var labelLayerName: UILabel!
@IBOutlet var labelPageNumber: UILabel!
@IBOutlet weak var view: UIImageView!
@IBOutlet var textFieldWhoText: UITextField!
@IBOutlet var textViewWhatText: UITextView!
@IBOutlet var textFieldWhereText: UITextField!
@IBOutlet var textFieldPageNumber: UITextField!
@IBOutlet var textFieldCueText: UITextField!
@IBOutlet var boxArrowLeft: UIImageView!
@IBOutlet var boxArrowRight: UIImageView!
@IBOutlet var boxArrowLeftTopConstraint: NSLayoutConstraint!
@IBOutlet var boxArrowRightTopConstraint: NSLayoutConstraint!
var cuePointObj:CuePoint!
var blockBtnClickedSave:((CuePoint) -> ())!
var blockBtnClickedCancel:((CuePoint) -> ())!
var blockBtnClickedDelete:((CuePoint) -> ())!
var blockTextChangedForPageNumber:((String, CuePoint) -> ())!
@IBOutlet var btnOutletVisibleOnPage: UIButton!
var isVisible = false
class func loadNib() -> CuePointPopup
{
return Bundle.main.loadNibNamed("CuePointPopup", owner: self,options: nil)!.last as! CuePointPopup
}
override func awakeFromNib() {
self.textFieldWhoText.delegate = self
self.textViewWhatText.delegate = self
self.textFieldWhereText.delegate = self
self.textFieldCueText.delegate = self
textViewWhatText.text = "Hello"
}
func setViewData(cueModel:CuePoint) {
self.cuePointObj = cueModel
labelCueNumberInImage.text = cueModel.cueNumber
labelCueNumber.text = "Cue #:" + cueModel.cueNumber
labelLayerName.text = "Layer #:" + cueModel.layerName
labelPageNumber.text = "Page #:" + cueModel.pageNumber
textFieldPageNumber.text = cueModel.pageNumber
textFieldWhoText.text = cueModel.whoString
textViewWhatText.text = cueModel.whatString
textFieldWhereText.text = cueModel.whereString
textFieldCueText.text = cueModel.cueTextString
if cueModel.isVisibleOnPage == true {
btnOutletVisibleOnPage.setImage(UIImage(named: "SelectedBox"), for: [])
btnOutletVisibleOnPage.tag = 1
}else{
btnOutletVisibleOnPage.setImage(UIImage(named: "UnselectedBox"), for: [])
btnOutletVisibleOnPage.tag = 0
}
}
func textFieldDidEndEditing(_ textField: UITextField) {
if textField.text != "" {
if blockTextChangedForPageNumber != nil {
self.blockTextChangedForPageNumber(textField.text!, self.cuePointObj)
}
}
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
//self.view.endEditing(true)
if self.textFieldWhoText.isEditing {
self.textFieldWhoText.endEditing(true)
} else if self.textFieldCueText.isEditing{
self.textFieldCueText.endEditing(true)
} else if self.textFieldWhereText.isEditing {
self.textFieldWhereText.endEditing(true)
} else {
self.textViewWhatText.endEditing(true)
}
//self.view.endEditing(true)
return false
}
}
这是我加载XIB的方式
@IBOutlet weak var bookView: UIView!
var objCuePopup:CuePointPopup!
if objCuePopup != nil {
objCuePopup.removeFromSuperview()
}
objCuePopup = CuePointPopup.loadNib()
objCuePopup = CuePointPopup.loadNib()
objCuePopup.frame = CGRect(x:cuePointModal.cueX, y:0, width:465, height:410)
objCuePopup.center = CGPoint(x:objCuePopup.center.x, y:cuePointModal.cueY + 5)
//Set Y value for Popup View
if objCuePopup.frame.origin.y < bookView.frame.origin.y {
objCuePopup.frame.origin.y = bookView.frame.origin.y
}
let popupMaxY = objCuePopup.frame.maxY
let bookViewMaxY = bookView.frame.maxY
if popupMaxY > bookViewMaxY {
objCuePopup.frame.origin.y = bookViewMaxY - objCuePopup.frame.size.height
}
//Set X value for Popup View
if cuePointModal.cueX > 455 {
objCuePopup.frame.origin.x = cuePointModal.cueX - 455
objCuePopup.boxArrowLeft.isHidden = true
objCuePopup.boxArrowRight.isHidden = false
let rightY = cuePointModal.cueY - objCuePopup.frame.origin.y
objCuePopup.boxArrowRightTopConstraint.constant = rightY + 3
}else{
objCuePopup.frame.origin.x = cuePointModal.cueX + 40
objCuePopup.boxArrowLeft.isHidden = false
objCuePopup.boxArrowRight.isHidden = true
let leftY = cuePointModal.cueY - objCuePopup.frame.origin.y
objCuePopup.boxArrowLeftTopConstraint.constant = leftY + 3
}
objCuePopup.setViewData(cueModel: cuePointModal)
objCuePopup.textFieldWhoText.delegate = self
objCuePopup.textFieldWhereText.delegate = self
objCuePopup.textViewWhatText.delegate = self
objCuePopup.textFieldCueText.delegate = self
bookView.addSubview(objCuePopup)
我希望这里有人可以帮助我解决这个问题。
解决方案
推荐阅读
- go - 如何从 grpc-gateway 发送错误正文?
- c++ - cin 如何将字符串读入字符串类的对象?
- django - 如何优化默认 Django oscars App Views 尤其是目录 App Views?
- node.js - 处理同一路径中的多个参数
- java - 在构建 maven 项目时避免在 jar 文件中绑定库
- python - Python pandas 用复杂计算迭代行的当前代码更快的方式
- r - 有没有办法绘制两个变量出现在 R 中的实例?
- javascript - 需要给定正则表达式的负版本(JS)
- java - Spring Boot Bitbucket Pilpline 到 ECR
- powershell - 使用 CMD 为文件夹中所有文件的最后修改日期生成日志?