ios - UITapGestureRecognizer 在 UITextView 中触发一次

标签 ios objective-c uitextview

当用户点击 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];
}

最佳答案

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

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

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

您需要将 UITextViewDelegate 添加到头文件中。希望对您有所帮助。

关于ios - UITapGestureRecognizer 在 UITextView 中触发一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17564732/

相关文章:

ios - 在 iOS 源代码注释中包含敏感信息是不好的做法吗?

ios - 从外部附件输入流读取并推送到s3的最有效方法?

iphone - 使用 viewControllers 获取数组的属性

ios - 获取属性字符串的颜色变化词

swift - 如何为 UITableViewCell TextView 对象实现实时字数统计?

iphone - 用于在具有多个输入 View 的 iOS 中创建 "wizard"表单 View 的对象结构

ios - Apple Developer - 配置文件显示无效状态

iphone - NSMutableArray arrayWithCapacity 与 initWithCapacity

ios - ScrollView 根本不动

swift - 如何在具有多行自动换行的 UITextView 中找到光标 Y 位置?