首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在目标-c中有三个UITextView委托时如何使用UITextViews委托

问在目标-c中有三个UITextView委托时如何使用UITextViews委托
EN

Stack Overflow用户
提问于 2016-06-22 05:38:59
回答 6查看 1.4K关注 0票数 1

创建UITextViews

代码语言:javascript
复制
//Text View 1  
textview1.layer.borderWidth = 1.0f;
textview1.layer.borderColor = [[UIColor blackColor] CGColor];
textview1.delegate = self;

UIToolbar* doneToolbar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
doneToolbar.barStyle = UIBarStyleBlackTranslucent;
doneToolbar.items = [NSArray arrayWithObjects:
    [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
    [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(donedescButtonClickedDismissKeyboard)],
    nil];
[doneToolbar sizeToFit];
textview1.inputAccessoryView = doneToolbar;

//Text View 2
textview2.layer.borderWidth = 1.0f;
textview2.layer.borderColor = [[UIColor blackColor] CGColor];
textview2.delegate = self;

UIToolbar* doneToolbarmeasure = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
doneToolbarmeasure.barStyle = UIBarStyleBlackTranslucent;
doneToolbarmeasure.items = [NSArray arrayWithObjects:
    [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
    [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(donemeasureButtonClickedDismissKeyboard)],
    nil];
[doneToolbarmeasure sizeToFit];
textview2.inputAccessoryView = doneToolbarmeasure;

//Text View 3
textview3.layer.borderWidth = 1.0f;
textview3.layer.borderColor = [[UIColor blackColor] CGColor];
textview3.delegate = self;

UIToolbar* doneToolbarreportdesc = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
doneToolbarreportdesc.barStyle = UIBarStyleBlackTranslucent;
doneToolbarreportdesc.items = [NSArray arrayWithObjects:
    [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil],
    [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(donereportdescButtonClickedDismissKeyboard)],
    nil];
[doneToolbarreportdesc sizeToFit];
textview3.inputAccessoryView = doneToolbarreportdesc;

代表与方法

代码语言:javascript
复制
-(void)donedescButtonClickedDismissKeyboard
{
    [textview1 resignFirstResponder]; 
}

-(void)donemeasureButtonClickedDismissKeyboard
{
    [textview2 resignFirstResponder];
}

-(void)donereportdescdamageButtonClickedDismissKeyboard
{
    [textview3 resignFirstResponder];
}

- (void)textViewDidBeginEditing:(UITextView *)textView
{
     textviewlbl1.hidden = YES;
     textviewlbl2.hidden = YES;
     textviewlbl3.hidden = YES;
}

- (void)textViewDidEndEditing:(UITextView *)textView
{
    if(textview1.text.length == 0)
    {
        textviewlbl1.hidden = NO;
    }

    if(textview2.text.length == 0)
    {
        textviewlbl2.hidden = NO;
    }

    if(textview3.text.length == 0)
    {
        textviewlbl3.hidden = NO;
    }
}

问题

当我单击一个UITextView时,所有三个标签都是隐藏的,第二次单击时,所有三个标签都是未隐藏的。我需要他们分别藏起来和解开。救命啊!!

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2016-06-22 05:46:00

您可以对所有三个文本视图使用相同的委托方法,如下所示

代码语言:javascript
复制
-(void)textViewDidBeginEditing:(UITextView *)textView {
  if (textView == textview1) {
    // Code for textview1
  }
  else if (textView == textview2) {
    // Code for textview2
  }
  else if (textView == textview3) {
    // Code for textview3
  }
}

所以你的方法会是:

代码语言:javascript
复制
- (void)textViewDidEndEditing:(UITextView *)textView
{
    if(textView == textview1 && textview1.text.length == 0)
    {
        textviewlbl1.hidden=NO;
    }
    if(textView == textview2  && textview2.text.length == 0)
    {
        textviewlbl2.hidden=NO;
    }
    if(textView == textview3  && textview3.text.length == 0)
    {
        textviewlbl3.hidden=NO;
    }
}

就像这样,您可以访问textview的所有委托方法。只需按其对象区分文本视图即可。其他一些委托方法是:

代码语言:javascript
复制
- (void)textViewDidChange:(UITextView *)textView;
- (void)textViewDidChangeSelection:(UITextView *)textView;
- (void)textViewDidEndEditing:(UITextView *)textView;
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange;
- (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)range;
票数 4
EN

Stack Overflow用户

发布于 2016-06-22 05:44:13

试试下面的代码

代码语言:javascript
复制
- (void)textViewDidEndEditing:(UITextView *)textView
 {
    if(textView.text.length == 0)
    {
       textView.hidden=NO;
    }
}
票数 0
EN

Stack Overflow用户

发布于 2016-06-22 05:44:21

像这样使用if-condition,

代码语言:javascript
复制
- (void)textViewDidBeginEditing:(UITextView *)textView
{
      if (textView == textView1) {
       }
     if (textView == textView2) {

       }
       // and so on
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37959403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档