Ios 单击“完成”按钮后,UITexfled将保持焦点

Ios 单击“完成”按钮后,UITexfled将保持焦点,ios,objective-c,uitextfield,Ios,Objective C,Uitextfield,我是xCode和Objective C的新手。我正在开发一个简单的计算器应用程序来学习。。。 我已经尽我所能,谷歌和搜索,以找到答案,但在一些事情上卡住了 我有一个textfield,当有人单击UIPickerView时,它会获取一个值。这很好,但当我使用下面的代码单击我的完成按钮时,它会保持焦点。 我已经玩过EndFirstRepsonder和EndEditing,但都没有删除闪烁的光标 作为旁注,动画只在放映时工作一次,不用于隐藏 //Show Picker Wheel - (IBActio

我是xCode和Objective C的新手。我正在开发一个简单的计算器应用程序来学习。。。 我已经尽我所能,谷歌和搜索,以找到答案,但在一些事情上卡住了

我有一个textfield,当有人单击UIPickerView时,它会获取一个值。这很好,但当我使用下面的代码单击我的完成按钮时,它会保持焦点。 我已经玩过EndFirstRepsonder和EndEditing,但都没有删除闪烁的光标

作为旁注,动画只在放映时工作一次,不用于隐藏

//Show Picker Wheel
- (IBAction)showPickerWheel:(id)sender 
 {

  //This line hides the default keyboard
  [sender resignFirstResponder];

  [UIView beginAnimations:nil context:nil];
  [UIView setAnimationDuration:0.6];
  CGAffineTransform transfrom = CGAffineTransformMakeTranslation(0, 20);
  _pickerViewContainer.transform = transfrom;
  _pickerViewContainer.alpha = 1;
  [UIView commitAnimations];

 }


//Hide Picker Wheel
- (IBAction)hidePickerWheel:(id)sender 
 {

  [UIView beginAnimations:nil context:nil];
  [UIView setAnimationDuration:0.6];
  CGAffineTransform transfrom = CGAffineTransformMakeTranslation(0, 20);
  _pickerViewContainer.transform = transfrom;
  _pickerViewContainer.alpha = 0;
  [UIView commitAnimations];

 }

您需要在DiEndediting委托方法中辞职FirstResponder,如下所示:

(BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

我很抱歉。请容忍我。我不明白。我尝试了几种方法来添加这个,但它没有改变任何事情。你能解释一下吗?嗨,帕特里克,当然可以,所以在你的ViewController(我想这就是你上面发布的代码所在)中添加我在答案中的代码。这是一种称为委托的特殊方法,当触摸键盘上的“完成”按钮时,系统(iOS)会自动调用该方法。如果您还在方法中放入NSLog语句,您将看到它被调用。必须记住将文本字段的委托设置为viewController。您可以这样做:myTextField.delegate=self;好的,通过按住ctrl键单击并将蓝线拖动到视图控制器,我将UITextField委托给视图控制器。如果我查看连接检查器,它将显示“委托”。我在这个view controller.m文件中有上面的代码。我添加了这个NSLog(@“%d”,是);但日志中没有显示任何内容。我相信这很简单,但我是如此的新,我只是没有赶上它。。。