Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 当Objective-c中有三个UITextView时,如何使用UITextView委托_Ios_Objective C_Textview_Xib - Fatal编程技术网

Ios 当Objective-c中有三个UITextView时,如何使用UITextView委托

Ios 当Objective-c中有三个UITextView时,如何使用UITextView委托,ios,objective-c,textview,xib,Ios,Objective C,Textview,Xib,创建UITextView //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)]; doneToolba

创建UITextView

//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;
委托和方法

-(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时,所有三个标签都被隐藏,第二次单击时,所有三个标签都被取消隐藏。 我需要它们分别隐藏和解开。请帮忙

试试下面的代码

- (void)textViewDidEndEditing:(UITextView *)textView
 {
    if(textView.text.length == 0)
    {
       textView.hidden=NO;
    }
}
试试下面的代码

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

如果条件是这样的,请使用

- (void)textViewDidBeginEditing:(UITextView *)textView
{
      if (textView == textView1) {
       }
     if (textView == textView2) {

       }
       // and so on
}

如果条件是这样的,请使用

- (void)textViewDidBeginEditing:(UITextView *)textView
{
      if (textView == textView1) {
       }
     if (textView == textView2) {

       }
       // and so on
}

您可以对所有三个textview使用相同的委托方法,如

-(void)textViewDidBeginEditing:(UITextView *)textView {
  if (textView == textview1) {
    // Code for textview1
  }
  else if (textView == textview2) {
    // Code for textview2
  }
  else if (textView == textview3) {
    // Code for textview3
  }
}
因此,您的方法如下所示:

- (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的所有委托方法。只需按对象区分textview即可。其他一些委托方法包括:

- (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;

您可以对所有三个textview使用相同的委托方法,如

-(void)textViewDidBeginEditing:(UITextView *)textView {
  if (textView == textview1) {
    // Code for textview1
  }
  else if (textView == textview2) {
    // Code for textview2
  }
  else if (textView == textview3) {
    // Code for textview3
  }
}
因此,您的方法如下所示:

- (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的所有委托方法。只需按对象区分textview即可。其他一些委托方法包括:

- (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;

您可以通过将
tag
设置为
UITextView

viewDidLoad
methodset标记中:

textview1.tag=1;
textview2.tag=2;
textview3.tag=3;
现在,您可以根据
if-else
条件隐藏和显示占位符标签

- (void)textViewDidBeginEditing:(UITextView *)textView
{
    if (textView.tag==1)
    {
        textviewlbl1.hidden=YES;
    }
    else if (textView.tag==2)
    {
        textviewlbl2.hidden=YES;
    }
    else if (textView.tag==3)
    {
        textviewlbl3.hidden=YES;
    }
}
- (void)textViewDidEndEditing:(UITextView *)textView
{
    if (textView.tag==1)
    {
        if(textview1.text.length == 0)
        {
            textviewlbl1.hidden=NO;
        }
    }
    else if (textView.tag==2)
    {
        if(textview2.text.length == 0)
        {
            textviewlbl2.hidden=NO;
        }
    }
    else if (textView.tag==3)
    {
        if(textview3.text.length == 0)
        {
            textviewlbl3.hidden=NO;
        }
    }
}

您可以通过将
tag
设置为
UITextView

viewDidLoad
methodset标记中:

textview1.tag=1;
textview2.tag=2;
textview3.tag=3;
现在,您可以根据
if-else
条件隐藏和显示占位符标签

- (void)textViewDidBeginEditing:(UITextView *)textView
{
    if (textView.tag==1)
    {
        textviewlbl1.hidden=YES;
    }
    else if (textView.tag==2)
    {
        textviewlbl2.hidden=YES;
    }
    else if (textView.tag==3)
    {
        textviewlbl3.hidden=YES;
    }
}
- (void)textViewDidEndEditing:(UITextView *)textView
{
    if (textView.tag==1)
    {
        if(textview1.text.length == 0)
        {
            textviewlbl1.hidden=NO;
        }
    }
    else if (textView.tag==2)
    {
        if(textview2.text.length == 0)
        {
            textviewlbl2.hidden=NO;
        }
    }
    else if (textView.tag==3)
    {
        if(textview3.text.length == 0)
        {
            textviewlbl3.hidden=NO;
        }
    }
}

委派对象是每个委派调用的参数,
textView
,在您的案例中:


-(无效)TextViewDiEndEditing:(UITextView*)textView
{
如果(textView==textview1)
{
//在此处使用textview1
}
else if(textView==textview2)
{
//在这里使用textview2
}
}

委派对象是每个委派调用的参数,
textView
在您的情况下:


-(无效)TextViewDiEndEditing:(UITextView*)textView
{
如果(textView==textview1)
{
//在此处使用textview1
}
else if(textView==textview2)
{
//在这里使用textview2
}
}

为这三个textview提供一个标识不同textview的标记


为这三个textview指定一个标识不同textview的标记。

如果textview长度为零,则是否要隐藏它?当它的长度=0时。我想展示一下标签。我不想隐藏textview。您的TextViewDiEndEdit被调用了吗?如果是,则请检查条件是否匹配?如果您的textview长度为零,则您是否要隐藏它?当它的长度=0时。我想展示一下标签。我不想隐藏textview。您的TextViewDiEndEdit被调用了吗?如果是,请检查条件是否匹配?完善您的代码工作。。非常感谢@pushkraj完善您的代码工作。。非常感谢@PushkrajSo,代理的事件如下所示
-(void)textviewdendediting:(UITextView*)textView{if(textView.tag==1){}if(textView.tag==2){}if(textView.tag==3)}
,因此代理的事件如下所示
-(void)textviewdendediting:(UITextView*)textView{if(textView.tag==1){}如果(textView.tag==2){}如果(textView.tag==3)}