我目前正面临着迅速的问题。 我实现了一个方法,在returnkey tap上创建textfield next responder,并且o使它成为fonctional我必须让我的textfields委托(一切都在我的其他类上工作)。
问题是,我还实现了一个UIPickerView,当点击“textfieldcategorie”时出现,这个pickerview需要委托,将选择的值放在文本字段中。
顺便说一下,使textfield nextresponder不再工作的方法,在我把textfield放在委托中的那一刻,它变得不活跃。
这是使用的代码:
声明我的变量:
@IBOutlet var textfieldcategorie: UITextField!
@IBOutlet var keyword: UITextField!
@IBOutlet var codepostal: UITextField!
@IBOutlet var prix: UITextField!
@IBOutlet var pickercategorie: UIPickerView! = UIPickerView()
显示uipickerview的方法:
func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
pickercategorie.hidden = false
return false
}
制作textfield nextresponder的方法:
func textFieldShouldReturn(textField: UITextField) -> Bool {
//delegate method
if textField == keyword {
textfieldcategorie.becomeFirstResponder()
}
return true
}
}
我不知道它是否重要,但我也使用这些方法:
在键盘出现时向上移动文本字段:
func textFieldDidBeginEditing(textField: UITextField) {
animateViewMoving(true, moveValue: 25)
}
func textFieldDidEndEditing(textField: UITextField) {
animateViewMoving(false, moveValue: 25)
}
func animateViewMoving (up:Bool, moveValue :CGFloat){
var movementDuration:NSTimeInterval = 0.3
var movement:CGFloat = ( up ? -moveValue : moveValue)
UIView.beginAnimations( "animateView", context: nil)
UIView.setAnimationBeginsFromCurrentState(true)
UIView.setAnimationDuration(movementDuration )
self.view.frame = CGRectOffset(self.view.frame, 0, movement)
UIView.commitAnimations()
}
//Fin Monter la vue lorsque le clavier apparait
并在视图中的任何位置点按键盘:
func DismissKeyboard(){
//Causes the view (or one of its embedded text fields) to resign the first responder status.
view.endEditing(true)
}
谢谢
答案 0 :(得分:0)
我觉得您必须按如下方式更改代码:
func textFieldShouldReturn(textField: UITextField) -> Bool {
//delegate method
if textField === keyword {
textfieldcategorie.becomeFirstResponder()
}
return true
}
原因是==运算符检查两个对象的相等性,但===运算符检查两个对象的标识,即这两个对象是否相同。
也请求改变:
@IBOutlet var pickercategorie: UIPickerView!