Xcode 我想为不同的文本字段设置不同的键盘,以用于注册表单

Xcode 我想为不同的文本字段设置不同的键盘,以用于注册表单,xcode,Xcode,我想在用户单击tfZip文本字段时显示带有“完成”按钮的用户号码键盘,否则很简单。但我的问题是每个键盘上都显示“完成”按钮。请帮助,我搜索了3-4个小时,但没有得到正确的答案 显然,我有textField,其中一个是Zip。现在我为不同的textField设置了不同的键盘。“当我第一次单击textField接受Zip textField时,它是ok(键盘),然后单击Zip textField时,我在键盘上单击了“未完成”按钮。” -(void)textFieldDidBeginEditing:(

我想在用户单击tfZip文本字段时显示带有“完成”按钮的用户号码键盘,否则很简单。但我的问题是每个键盘上都显示“完成”按钮。请帮助,我搜索了3-4个小时,但没有得到正确的答案

显然,我有textField,其中一个是Zip。现在我为不同的textField设置了不同的键盘。“当我第一次单击textField接受Zip textField时,它是ok(键盘),然后单击Zip textField时,我在键盘上单击了“未完成”按钮。”

-(void)textFieldDidBeginEditing:(UITextField*)textField
{
[[NSNotificationCenter defaultCenter]添加观察者:self
选择器:@选择器(键盘将显示:)
名称:UIKeyboardWillShowNotification
对象:无];
如果(!(textField==tfZip))
{
doneButton.hidden=是;
}
}
-(void)textfielddidediting:(UITextField*)textField{
}
-(无效)键盘将显示:(NSNotification*)注释{
//创建自定义按钮
doneButton=[UIButton按钮类型:UIButtonTypeCustom];
doneButton.frame=CGRectMake(0,163,106,53);
doneButton.adjustsImageWhenHighlighted=否;
[doneButton setImage:[UIImage ImageName:@“Done.png”]
forState:uicontrol状态正常];
[doneButton setImage:[UIImage ImageName:@“Done_select.png”]
forState:uicontrol状态突出显示];
[完成按钮添加目标:自我
操作:@selector(doneButton:)
forControlEvents:UIControlEventTouchUpInside];
如果(系统版本大于或等于(@“7.0”)){
dispatch\u async(dispatch\u get\u main\u queue()^{
UIView*键盘视图=[UIApplication sharedApplication]windows]lastObject]子视图]firstObject];
[doneButton setFrame:CGRectMake(0,keyboardView.frame.size.height-53106,53)];
[键盘视图添加子视图:完成按钮];
[键盘视图将子视图带到前面:doneButton];
[UIView animateWithDuration:[[note.userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]floatValue]-.02
延迟:.0
选项:[[note.userInfo objectForKey:UIKeyboardAnimationCurveUserInfo]intValue]
动画:^{
self.view.frame=CGRectOffset(self.view.frame,0,0);
}完成:无];
});
}否则{
//定位键盘视图
dispatch\u async(dispatch\u get\u main\u queue()^{
UIWindow*tempWindow=[[UIApplication sharedApplication]windows]对象索引:1];
UIView*键盘;

对于(int i=0;i使用textfield delegate方法,仅显示tfZip的“完成”按钮

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{

     if(textField==tfZip)
     {
          doneButton.hidden=NO;
     }
     else
    {
          doneButton.hidden=YES;
     }
   return YES;
}

我想您需要检查内部-(void)键盘将显示:(NSNotification*)注意;在将“完成”按钮添加为子视图之前。

您可以直接从nib或故事板设置键盘类型,还可以设置返回键类型..或通过类似[textField setKeyboardType:UIKeyboardTypeNumberPad]的代码;我是通过编程来实现的。我更改了代码。现在,当我单击任何文本字段键盘上的“显示完成”按钮,然后第二次单击其他文本字段时,它是“显示右”键盘。您在文本字段中的代码是否应该开始编辑以隐藏和取消隐藏或执行其他操作。先生,您编辑了什么?我一直面临相同的问题。@mohacsIt不工作,相同的问题按钮d不要隐藏第一次单击,然后使用工具栏并在其中添加完成按钮。然后设置[tfZip setInputAccessoryView:toolbar];然后忘记其他文本字段。它只显示它设置的文本字段。谢谢你的回答。现在“完成”按钮出现在键盘顶部,它工作得很好。如果有空的空间,我可以将它固定在数字键盘空白处的底部吗。然后不要将它设置为输入附件,而是将工具栏框架设置为嗯,你需要定位和展示。
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{

     if(textField==tfZip)
     {
          doneButton.hidden=NO;
     }
     else
    {
          doneButton.hidden=YES;
     }
   return YES;
}