如何以编程方式关闭TextView中的键盘

3
有没有办法在iOS中不调用resignFirstResponder就隐藏或不显示键盘?我知道不同的方法来隐藏键盘,第一种方法是将文本视图设置为不可编辑,或者使用...
- (BOOL)textFieldShouldEndEditing:(UITextView *)textview
{
    [textview resignFirstResponder];
}

但在我的情况下,这些方法将不起作用,因为我只想关闭或隐藏键盘,而不需要编辑文本视图。我有一个包含一些文本的文本视图,当我点击句子时,它需要被选中,我已经成功完成了选择部分,但是当我在项目中写上面的键盘关闭方法时,所选句子的选择部分不会出现。是否有其他方法可以解决这个问题。


我不清楚你想做什么。你说你想编辑文本视图,但又不想要键盘?那用户怎么编辑呢?你是想让键盘有时出现,有时不出现吗? - JP Hribovsek
@JPHribovsek 我不想让键盘一直出现。为什么会因为这个问题而被踩呢? - stackiphone
我没有给你的问题点踩,只是想帮忙…… - JP Hribovsek
@JPHribovsek 好的,谢谢。我从Vignesh那里得到了解决方案,这是一个非常好的解决方案。 - stackiphone
2个回答

4

只有当您处于编辑模式时,文本框中的选择才会保留。当您放弃第一响应者时,您的选择也会消失。

为避免在编辑模式下调用键盘,您可以更改输入视图。例如,看一下以下代码:

    textview.inputView = [[UIView alloc] init];

这会带来一个自定义输入视图,但它不可见。

我把这段代码放在哪里了?是在TextView的didSelection方法中吗? - stackiphone
但我是在IB中创建这个TextView的...所以我可以将它放在ViewDidLoad中,例如:mainTextView.inputview = [[UIView alloc] init]; - stackiphone
@stackiphone。再次欢迎!从技术上讲,我并没有关闭键盘,我只是呈现了一个没有设置框架(CGRectZero)的输入视图。 - Vignesh
哦,这是一个好主意啊,我不知道为什么这些人会对这个问题投反对票,这是一个非常有用的问题和答案,适用于任何人。 - stackiphone
@stackiphone。我认为它被down vote了,因为在没有输入视图支持编辑的情况下使textview可编辑相当不正常。此外,如果没有先前的问题知识,很难理解您想要什么。重新表述问题以使其更清晰可能会使您的问题得到up vote!尽管如此,这是一个有趣的问题! - Vignesh
显示剩余2条评论

1

添加

self.textView.editable = NO;

试一下这个

NSRange selection = [yourTextView.text rangeOfString:yourTextView.text]; 
if( selection.location != NSNotFound ){ yourTextView.selectedRange = selection; }

它将从TextView中移除键盘。希望能有所帮助。


不好意思,这对我行不通,请问您能否说明问题,我只想选择TextView中的文本而不弹出键盘。 - stackiphone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接