我在 - (void)viewDidLoad
中有以下代码[txtView becomeFirstResponder];
[txtView setSelectedRange:NSMakeRange(0, 10)];
也就是说,我想以编程方式在我的UITextView中选择文本。 与此同时,我不希望键盘出现。 我尝试添加以下代码 -
[txtView setEditable:NO];
或
[txtView resignFirstResponder];
虽然它们会使键盘隐藏起来,但无论哪种方式也会使文本选择消失。
总之,我想以编程方式选择文本并同时禁用键盘。 我认为这是可能的,因为当我有[txtView setEditable:NO];我仍然可以触摸屏幕来选择文字。 问题只是我不知道如何以编程方式完成所有操作。 有人能帮助我吗?
答案 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];
}