使用UILongPressGestureRecognizer 和UITextView。
将UILongPressGstureRecognizer 属性添加到您的视图控制器:
@property UILongPressGestureRecognizer *gestureRecognizer;
您需要声明您的视图控制器符合UITextViewDelegate 和UIGestureRecognizerDelegate 协议:
@interface ViewController : UIViewController<UITextViewDelegate, UIGestureRecognizerDelegate>
在viewDidLoad:
self.textView.editable = NO;
self.textView.delegate = self;
self.gestureRecognizer = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(textViewLongPressed:)];
self.gestureRecognizer.delegate = self;
[self.textView addGestureRecognizer:self.gr];
这是长按文本视图时会调用的方法:
-(void) textViewLongPressed:(UILongPressGestureRecognizer *)sender
{
self.textView.editable = YES;
[self.textView becomeFirstResponder];
}
从UIGestureRecognizerDelegate实现这个方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if (self.gestureRecognizer == gestureRecognizer){
return YES;
}
return NO;
}
当你完成编辑文本视图时
-(void) textViewDidEndEditing:(UITextView *)textView
{
self.textView.editable = NO;
}
按下回车键时关闭键盘:
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"])
[textView resignFirstResponder]; // or [textView endEditing:YES]
return YES;
}