当用户点击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];
}
答案 0 :(得分: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;
}
答案 1 :(得分:1)
当textView成为第一响应者时,您无法捕获它上面的触摸事件。我很快就找到了一种骇人的方式,但我确信你能找到更好的方式。
- (void)tapTextView
{
[textViewMessage setEditable:YES];
[textViewMessage becomeFirstResponder];
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
if ([textView isFirstResponder]) {
[textView setEditable:NO];
}
return YES;
}
您需要将UITextViewDelegate添加到头文件中。希望它有所帮助。