objective-c - 在 UITextView 中移动光标

标签 objective-c ios cocoa-touch uitextview

当选择(触摸)UITextView时,我尝试移动光标以模拟UITextField占位符事物。

我希望光标位于第一行的开头。我的问题是,[someTextField setSelectedRange]无法可靠地工作。当我在 textView:shouldChangeTextInRange:replacementText: 中调用它时,它会按预期工作。但只有当用户开始输入时才会调用此方法。当 UITextView 成为第一响应者时,我使用 textViewDidBeginEditing: 移动光标:

- (void)textViewDidBeginEditing:(UITextView *)textView
{
    if (textView == self.descriptionText) {
        CustomTextView* customTV = (CustomTextView *)textView;
        if ([customTV.text isEqualToString:customTV.placeholder]) {
            // text in text view is still the placeholder -> move cursor to the beginning
            customTV.text = customTV.placeholder;
            customTV.textColor = [UIColor lightGrayColor];
            customTV.selectedRange = NSMakeRange(0, 0);
        }
    }
}

您知道为什么 customTV.selectedRange = NSMakeRange(0, 0);textViewDidBeginEditing: 中无法正常工作吗?

感谢您的帮助!

最佳答案

实际上有一个非常简单的方法可以实现这一点。

    // Count the characters on screen
    NSMutableString *numOfChar = [self.myTextField.text mutableCopy];

    // Skip that many characters to the left
    self.myTextField.selectedRange = NSMakeRange(self.myTextField.selectedRange.location-[numOfChar length], 0);

希望这有帮助。

关于objective-c - 在 UITextView 中移动光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9348840/

相关文章:

ios - 使用指针检索用户信息。解析

ios - SQLite 数据库不可写

ios - "Not running"状态下的远程通知

iphone - UIScrollView 不可滚动

ios - 如何使用 objective-c 格式化从 youtube api v3 reuqest 返回的持续时间?

objective-c - 裁剪 UIImage

ios - RxSwift 和 UICollectionView、UITableView

ios - 传递一个 NSManagedObjectContext

ios - 加载隐藏/离屏 UIWebView

cocoa-touch - 哪个事件处理对象成为/失去第一响应者状态?