你好我有一个文本的textview我想在开始时移动光标位置我已经使用NSMakeRange但我不知道为什么它不起作用。我写过NSMakeRange是不同的地方,希望它至少运行一次但不起作用。这是代码。 thx提前
- (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;
}
}
答案 0 :(得分:21)
这适用于我在iOS 6.0模拟器上的测试:
- (void)textViewDidBeginEditing:(UITextView *)textView {
dispatch_async(dispatch_get_main_queue(), ^{
textView.selectedRange = NSMakeRange(0, 0);
});
}
我猜它会在发送textViewDidBeginEditing:
消息后根据触摸位置更新选择。 dispatch_async
可以解决这个问题。
答案 1 :(得分:0)
K我找到了解决方案。我在光标出现之前设置光标位置我在KeyBoardDidShow通知中剪切并粘贴代码,它工作得非常好。