当键盘已经启动时,如何在触摸UITextView时缩回键盘?

时间:2010-01-27 09:47:48

标签: iphone uitextview

我正在编写一个具有允许编辑的UITextView的应用程序。当用户第一次触摸UITextView时,键盘会出现,我想在用户再次触摸UITextView时缩回该键盘,例如我在textview中输入了一些数据,屏幕上仍然显示键盘,我点击了UITextView,这会导致键盘缩回。

有没有办法实现这个目标?

(我知道提供一个完成按钮并执行此操作,但我希望通过点击UITextView本身来实现这一点)

4 个答案:

答案 0 :(得分:2)

顺便说一句,我建议你不要在iPhone上使用切换状态元素。在现实世界中使用它很容易。这就是为什么Apple应用程序都使用键盘上的“返回”键或完成按钮。

在您考虑的界面中,用户会发现自己关闭,然后意外地重新打开键盘大约10%或更多时间。这将使您的应用程序感到麻烦和片状。

答案 1 :(得分:1)

您应该为UITextView致电resignFirstResponder。假设您有一个IBOutlet的文字视图:

@property (nonatomic, retain) IBOutlet UITextView *comment;

然后可以从[comment resignFirstResponder];等调用touchesBegan

参见例如 How to Dismiss the Keyboard when using a UITextView

答案 2 :(得分:1)

你要找的是一个大的透明uibutton“overlapButton”,它始终位于uitextview的顶部。

当文本视图出现时,您将按钮设置为隐藏,以便您可以自由点击文本视图。

[overlapButton setHidden:YES];

点击文本视图时,键盘会出现,并且会调用textview委托中的以下方法:

-(BOOL)textViewShouldBeginEditing:(UITextView *)textView{
    [overlapButton setHidden:NO];
}

在这里,您需要设置“overlapButton”可见,以便在键盘启动时,您可以触摸现在与textview重叠的按钮。在按钮操作上,您可以隐藏键盘:

-(IBAction) overlapButtonTapped{
    [myTextView resignFirstResponder];
}

在第一个响应者辞职后,将调用以下方法:

-(BOOL)textViewShouldEndEditing:(UITextView *)textView{
    [overlapButton setHidden:YES];
}

为按钮设置相应的隐藏属性后(如上所示),您再次有一个“清晰”的文本视图,您可以再次点击以显示键盘..等等..

干杯。

答案 3 :(得分:0)

我同意你的意见。我看到过这种情况!我也不建议这样做!如果不是不可能编辑/复制/粘贴手势,它也会使编辑变得非常困难。另一方面,如果男人仍然想要这个......:P我在其他帖子中提供的代码是一种享受!欢呼声。