gpt4 book ai didi

iphone - 在新键盘加载时从数字键盘中删除完成按钮

转载 作者:搜寻专家 更新时间:2023-10-30 20:27:38 29 4
gpt4 key购买 nike

好的,我会尽力解释这一点。我有一个 iPhone 应用程序,它有一个文本字段,用户只能输入数字。那里不是问题。但是,小键盘上没有完成按钮,所以我不能让它消失。我可以制作一个按钮,用户可以按下该按钮来关闭键盘,但我宁愿有一个完成按钮,因为屏幕是“忙碌”的。

好吧,经过一些研究,我遇到了 this .哇,效果很好。但是,我还有另一个需要默认键盘的文本字段。每当键盘出现时,无论是哪种类型,它上面都有“完成”按钮。

不好。

所以我做了更多的挖掘。通读评论,人们提到了一种使用“开始编辑”特性来摆脱“完成”按钮的方法,只在必要时调用“完成按钮”代码。我也完成了大部分工作。如果您在数字字段中键入,然后关闭键盘,然后在正常字段中键入,则不会出现完成按钮。

但是,有一个错误,“完成”按钮仍然出现。如果您点击数字字段,然后点击普通字段,键盘永远不会“消失”,因此即使它从小键盘变为普通键盘,按钮仍然存在。我想从 View 中删除按钮,但我不确定该怎么做。这是我的代码...

//Done button for numpad
- (void)keyboardWillShow:(NSNotification *)note {
if (showDoneButton == YES)
{


// create custom button
UIButton *doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
doneButton.frame = CGRectMake(0, 163, 106, 53);
doneButton.adjustsImageWhenHighlighted = NO;
if ([[[UIDevice currentDevice] systemVersion] hasPrefix:@"3"]) {
[doneButton setImage:[UIImage imageNamed:@"DoneUp3.png"] forState:UIControlStateNormal];
[doneButton setImage:[UIImage imageNamed:@"DoneDown3.png"] forState:UIControlStateHighlighted];
} else {
[doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
[doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
}
[doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];

// locate keyboard view
UIWindow* tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
UIView* keyboard;
for(int i=0; i<[tempWindow.subviews count]; i++) {
keyboard = [tempWindow.subviews objectAtIndex:i];
// keyboard view found; add the custom button to it
if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
[keyboard addSubview:doneButton];
}
showDoneButton = NO; //This tells done button code to run or not
}
}

- (void)doneButton:(id)sender {
NSLog(@"Input: %@", playerOneLifeLabel.text);
NSLog(@"Input: %@", playerTwoLifeLabel.text);
[playerOneLifeLabel resignFirstResponder];
[playerTwoLifeLabel resignFirstResponder];
}

当 NumPadfield 触发“编辑确实开始”时,它会调用此函数:

- (IBAction)needNumberPad:(id)sender{
showDoneButton = YES;
}

然后确保显示完成按钮。完成按钮代码完成后,变量(如上所示)设置回 NO,因此如果您点击默认文本字段,它不会再次显示。 bool 变量默认设置为 NO。

需要做的是,如果您立即从编辑 numPad 字段跳转到默认字段,完成按钮就会消失。我可以将代码放在“编辑结束”时调用的函数中,但我不知道该放什么。帮助将不胜感激,我已经走到这一步了!

谢谢!

最佳答案

按照这些步骤

一个。首先使 doneButton 成为您类的实例变量,这将帮助您维护对按钮的引用

keyboardWillShow:(NSNotification *)note 方法的开头添加此代码

if(!showDoneButton ){
if(doneButton){
[doneButton removeFromSuperview];
doneButton = nil;
}
return;
}

为 keyBoardWillHide 添加通知

[[NSNotificationCenter defaultCenter] addObserver:self 
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];

在 keyBoardWillHide 方法中执行以下操作

- (void)keyboardWillHide:(NSNotification *)note 
{
if(doneButton)
{
[doneButton removeFromSuperview];
doneButton = nil;
}
}

这应该可以解决问题。

关于iphone - 在新键盘加载时从数字键盘中删除完成按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1965340/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com