0

当用户点击 UITextView 时,我需要在 UITextView 的第一个位置设置光标。NSMakeRange没有帮助我,但我在How to set cursor position for UITextView on user input? 中找到了解决方案?

我在我的 UITextView 中添加了 tapGesture。但它只工作一次,第一次,为什么?

textViewMessage.gestureRecognizers = nil;
UITapGestureRecognizer *tapTextView = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTextView)];
[textViewMessage addGestureRecognizer:tapTextView];

这个方法只调用一次

- (void)tapTextView
{
    [textViewMessage becomeFirstResponder];
}
4

2 回答 2

1

试试这个:子类 UITextView 并添加以下方法:

- (BOOL)becomeFirstResponder
{
    BOOL result = [super becomeFirstResponder];

    if (result)
    {
        //Take your cursor to any position you want
    }
    return result;
}

- (BOOL)resignFirstResponder
{
    BOOL result = [super resignFirstResponder];

    if (result)
    {
        //Do anything you need when text view resigns
    }
    return result;
}
于 2013-07-10T07:52:51.000 回答
1

当 textView 成为第一响应者时,您无法捕捉到它上面的触摸事件。我很快就找到了一种骇人听闻的方法,但我相信你能找到更好的方法。

- (void)tapTextView
{
    [textViewMessage setEditable:YES];
    [textViewMessage becomeFirstResponder];
}

- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
    if ([textView isFirstResponder]) {
        [textView setEditable:NO];
    }
    return YES;
}

您需要将 UITextViewDelegate 添加到您的头文件中。希望能帮助到你。

于 2013-07-10T08:45:49.127 回答