如何隐藏键盘并在UITextview中以编程方式选择文本?

时间:2012-03-17 03:50:44

标签: objective-c ios uitextview

我在 - (void)viewDidLoad

中有以下代码
[txtView becomeFirstResponder];
[txtView setSelectedRange:NSMakeRange(0, 10)];

也就是说,我想以编程方式在我的UITextView中选择文本。 与此同时,我不希望键盘出现。 我尝试添加以下代码 -

[txtView setEditable:NO];

[txtView resignFirstResponder];

虽然它们会使键盘隐藏起来,但无论哪种方式也会使文本选择消失。

总之,我想以编程方式选择文本并同时禁用键盘。 我认为这是可能的,因为当我有[txtView setEditable:NO];我仍然可以触摸屏幕来选择文字。 问题只是我不知道如何以编程方式完成所有操作。 有人能帮助我吗?

2 个答案:

答案 0 :(得分:1)

来自-resignFirstResponder上的文档:

  

子类可以覆盖此方法以更新状态或执行某些操作   行动,如取消选择,或返回NO,拒绝   放弃第一响应者的地位。如果您覆盖此方法,则为您   必须在你的某个时刻调用super(超类实现)   代码。

您需要继承UITextView并覆盖-resignFirstResponder方法,可能是这样的:

- (BOOL)resignFirstResponder {
    [self setEditable:NO];
    [self setSelectedRange:NSMakeRange(0, 10)];
    return YES;

}

理论上,这应该有用,但resignFirstResponder里面的细节可能不太喜欢。

答案 1 :(得分:0)

你可以用很少的延迟来做这件事。看到这个,

在viewDidLoad

中编写此代码
[txtView becomeFirstResponder];
[txtView setSelectedRange:NSMakeRange(0, 10)];
[self performSelector:@selector(resignKeyBoard) withObject:nil afterDelay:.5]; 

-(void)resignKeyBoard
{
   [txtView resignFirstResponder]; 
}