2

可能重复:
将光标移动到 UITextField 的开头

您好,我有一个带有文本的文本视图,我想在开始时移动光标位置我使用了 NSMakeRange,但我不知道为什么它不起作用。我写过 NSMakeRange is different places ,希望它至少能运行一次但没有用。这是代码。提前谢谢

- (void)viewDidLoad
{
    [super viewDidLoad];    
    apnatxtView.textColor=[UIColor lightGrayColor];
    apnatxtView.text=@"Description goes here";
    totalLenght=apnatxtView.text.length;
     apnatxtView.selectedRange=NSMakeRange(0,0);    
}


- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{

apnatxtView.selectedRange=NSMakeRange(0,0);  
    return YES;


}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    [apnatxtView resignFirstResponder];

}

- (void)textViewDidChange:(UITextView *)textView{


    if (apnatxtView.text.length == 0) {
        apnatxtView.textColor= [UIColor lightGrayColor];
        apnatxtView.text=@"Description goes here";
        apnatxtView.selectedRange=NSMakeRange(0, 0);
    }



}

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{


    if (apnatxtView.textColor == [UIColor lightGrayColor]) {
        apnatxtView.textColor=[UIColor blackColor];
       // apnatxtView.text=@"Description goes here";
        apnatxtView.text=nil;
        return YES;
    }

}
4

2 回答 2

21

这适用于我在 iOS 6.0 模拟器上的测试:

- (void)textViewDidBeginEditing:(UITextView *)textView {
    dispatch_async(dispatch_get_main_queue(), ^{
        textView.selectedRange = NSMakeRange(0, 0);
    });
}

我猜它在发送消息会根据触摸位置更新选择。围绕它textViewDidBeginEditing:的作品。dispatch_async

于 2012-11-20T08:01:54.013 回答
0

K 我找到了解决方案。我在光标出现之前设置光标位置我在 KeyBoardDidShow 通知中剪切并粘贴代码,它工作得很好。

于 2012-11-20T07:46:34.800 回答