Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone UIKeyboardWillShowNotification问题_Iphone_Objective C_Ios - Fatal编程技术网

Iphone UIKeyboardWillShowNotification问题

Iphone UIKeyboardWillShowNotification问题,iphone,objective-c,ios,Iphone,Objective C,Ios,这是我的应用程序的流程。第一视图->第二视图->第三视图 在第三个视图中,当我单击tableView的任何一行时,都会显示一个UIView,它有一个只接受数字的文本字段。为此,我实现了UIKeyboardWillShowNotification,并在键盘左下角为“点”按钮显示了一个UIButton(为此,我创建了两个图像,并将该图像设置为UIButton对象) 我的问题是,在使用这个自定义键盘(2-3次)后,当我将表单第三视图重定向到第一视图时,这个UIButton(带点图像)出现在第一视图上。

这是我的应用程序的流程。第一视图->第二视图->第三视图

在第三个视图中,当我单击tableView的任何一行时,都会显示一个UIView,它有一个只接受数字的文本字段。为此,我实现了UIKeyboardWillShowNotification,并在键盘左下角为“点”按钮显示了一个UIButton(为此,我创建了两个图像,并将该图像设置为UIButton对象)

我的问题是,在使用这个自定义键盘(2-3次)后,当我将表单第三视图重定向到第一视图时,这个UIButton(带点图像)出现在第一视图上。我在那里使用了默认键盘,但这张图片并没有消失

在从第3视图移动到第1视图的过程中,我正在删除我之前注册的键盘通知的观察者&同时我正在检查是否

if ([dotButton retainCount] > 0) {

    [dotButton release];
    dotButton = nil;
}
我在viewDidLoad中只分配了一次点按钮。 我正在使用popToRootViewController方法从第三个视图返回第一个视图


我不想在第一个视图中显示此点按钮。我该怎么做。

我假设当您创建dotButton时,您正在调用
addSubview:
将其显示在屏幕上

要删除它时,需要通过调用
[dotButton removeFromSuperview]
来删除。如果您刚刚释放它,它仍将被包含它的视图保留

最后,除非您正在调试某些东西,否则永远不要调用
retainCount
。我已经编写Objective-C代码多年了,我从未使用过
retainCount
,即使是在我做奇怪的运行时工作时

规则很简单。如果您需要一个对象来粘住,可以调用retain。完成后,您可以调用release。如果其他人保留了它,那不关你的事。

遵循以下步骤 1) 首先,将doneButton作为类的变量实例,这将有助于维护对按钮的引用 2) 将此代码添加到您的键盘WillShow:(NSNotification*)注释方法的开头

if(dotButton){
[dotButton removeFromSuperview];
dotButton = nil;
}

还有一件事,请使用NSNotificationCenter实现UIKeyboardWillHideNotification方法,并从第2步开始执行。

感谢您的帮助,我尚未实现UIKeyboardWillHideNotification方法。因为它不允许我从第二次开始显示点按钮图像。请注意,
retainCount
永远不能返回0。