gpt4 book ai didi

ios - 双击 uitextview

转载 作者:行者123 更新时间:2023-12-02 20:35:07 32 4
gpt4 key购买 nike

我只是想让我的 uitextview 在用户双击它时可编辑。

但在我的代码中它只能工作一次。隐藏键盘后双击停止像我想要的那样工作。它只显示“复制并定义”弹出窗口,如果我第二次尝试......

也许“textViewDidEndEditing”不是正确的方法......

这是代码:

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

CGFloat screen_height = [UIScreen mainScreen].bounds.size.height;
CGFloat screen_width = [UIScreen mainScreen].bounds.size.width;

scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0,screen_width,screen_height)];
scrollView.showsVerticalScrollIndicator=NO;
scrollView.scrollEnabled=NO;
scrollView.userInteractionEnabled=YES;
[scrollView setBackgroundColor:[UIColor colorWithRed: 0.0 green: 0.0 blue: 0.0 alpha: 0.5]];
[self.view addSubview:scrollView];
scrollView.contentSize = CGSizeMake(screen_width,screen_height);

MyTextView = [[UITextView alloc]initWithFrame:CGRectMake(0, 0, screen_width, screen_height)];
MyTextView.text = @"Headline\nNo1";
MyTextView.textColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
[MyTextView setFont:[UIFont fontWithName:@"Helvetica" size:90]];
MyTextView.textAlignment = NSTextAlignmentCenter;
MyTextView.delegate = self;
[MyTextView setScrollEnabled:NO];
[MyTextView setEditable:NO];
[MyTextView setUserInteractionEnabled:YES];
[MyTextView setBackgroundColor:[UIColor colorWithRed: 0.0 green: 0.0 blue: 0.0 alpha: 0.0]];
[MyTextView sizeToFit];
[scrollView addSubview:MyTextView];

// TAP
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
[doubleTap setNumberOfTapsRequired:2];
[doubleTap setNumberOfTouchesRequired:1];
[MyTextView addGestureRecognizer:doubleTap];

// KEYBOARD
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];
}


-(void)doubleTap:(UITapGestureRecognizer *)sender {

NSLog(@"View: %@", [[sender view] class]);
UITextView *tappedView = (UITextView *)[sender view];
[tappedView setEditable:YES];
[tappedView becomeFirstResponder];
}


-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer {

if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) {

if (((UITapGestureRecognizer *)gestureRecognizer).numberOfTapsRequired == 2) {
return YES;
}
}
return YES;
}


-(BOOL)canBecomeFirstResponder {

if (MyTextView.editable == YES) {
return YES;
}
else {
return NO;
}
}


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGesture {

return YES;
}


-(void)textViewDidEndEditing:(UITextView *)textView {

[textView setEditable:NO];
}


-(void)keyboardDidHide:(NSNotification *)aNotification {

NSLog(@"keyboardDidHide");

// [textView setEditable:NO]; // same result like textViewDidEndEditing
}

最佳答案

从方法中删除/注释[textView setEditable:NO];
-(void)textViewDidEndEditing:(UITextView *)textView

这是唯一给你带来麻烦的想法。因为停止 UITextView/UItextField 编辑模式的最佳方法是调用 resignFirstReponder 方法。

编辑

对于隐藏键盘,在 viewDidLoad 方法中添加以下行

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
[self.view addGestureRecognizer:singleTap];

然后添加 hideKeyboard 如下

-(void) hideKeyboard
{
[MyTextView resignFirstResponder];
}

关于ios - 双击 uitextview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20420784/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com