Objective c 如何在UITableViewCell内设置UITextView的光标位置

Objective c 如何在UITableViewCell内设置UITextView的光标位置,objective-c,ios,ipad,uitableview,Objective C,Ios,Ipad,Uitableview,我们正在UITableViewCell中进行验证。该单元格有一个文本视图和一个自定义按钮,点击该按钮时会打开一个包含UIDatePickerView的弹出窗口&用户将选择日期。在这里选择日期是强制性的。因此,我们使用下面的代码进行了验证。在紧邻下一行的单元格内的textView的textViewBeginEditing委托方法中。i、 e当用户单击下一行的textView时,将验证前一行的值。 在这里,验证似乎正在工作,但光标在当前单元格中仍会闪烁,并且不会移动到正在验证的前一个单元格 UITa

我们正在UITableViewCell中进行验证。该单元格有一个文本视图和一个自定义按钮,点击该按钮时会打开一个包含UIDatePickerView的弹出窗口&用户将选择日期。在这里选择日期是强制性的。因此,我们使用下面的代码进行了验证。在紧邻下一行的单元格内的textView的textViewBeginEditing委托方法中。i、 e当用户单击下一行的textView时,将验证前一行的值。 在这里,验证似乎正在工作,但光标在当前单元格中仍会闪烁,并且不会移动到正在验证的前一个单元格

UITableViewCell* myCell = (UITableViewCell*)textView.superview ;

UITextView *txtviewMycelltext;//=[[UITextView alloc]init];

for (UIView *view in myCell.subviews) 
{

  if([view isKindOfClass:[UILabel class]]) 
  {

      UILabel *lbl=view;
      lbl.text=[lbl.text stringByReplacingOccurrencesOfString:@"." withString:@""];
      int tablerowindex=[lbl.text intValue];
      NSLog(@"%@",lbl.text);
      break;
  }
  if([view isKindOfClass:[UITextView class]]) 
  {
      txtviewMycelltext=view;
  }
}



inttablerowindex-=1;

if(inttablerowindex>0)
{
  if([[arrActionvalues objectAtIndex:inttablerowindex1]objectForKey:KEY_FOLLOWUPDATE]==EMPTYSTRING)
  {
      UIAlertView *alert = [[UIAlertView alloc]
                                        initWithTitle: @"Alert"
                                        message: ALERT_FOLLOWUPDATE
                                        delegate: nil
                                        cancelButtonTitle:@"OK"
                                        otherButtonTitles:nil];
      [alert show];


//              UITableView *mytable=(UITableView *)((textView.superview).superview).superview;
      UITableView *myTable=(UITableView*)[[myCell superview]superview];

      NSIndexPath *indexPath = (NSIndexPath*)[myTable indexPathForCell:  
          (UITableViewCell*)textView.superview.superview];
      UITableViewCell *previousCell = (UITableViewCell*)[myTable cellForRowAtIndexPath:[NSIndexPath indexPathForRow:indexPath.row - 1 inSection:indexPath.section]];

      for (UIView *view in previousCell.subviews) 
      {
                      NSLog(@"%@",view);
                      if([view isKindOfClass:[UIView class]]) {

                          UIView *subView=view;
                          for(UIView *view2 in subView.subviews)
                          {

                              if([view2 isKindOfClass:[UITextView class]]) {
                                  UITextView *txt=view2;

                                  [txtviewMycelltext resignFirstResponder];
                                  [txt becomeFirstResponder];
                                   break;
                              }
                          }


                      }
                  }
              }
          }

请告诉我需要做什么才能将光标位置移到正确的单元格。

您的代码不太清楚,但我猜您正在TextViewDiEndediting中执行验证

TextViewShoulDediting是执行文本视图内容验证的适当委托方法。如果要阻止从当前文本视图切换焦点,可以返回NO


在这种情况下,我建议使用标签。您到底在验证什么?您的代码主要在视图中进行迭代,这相当笨拙……我试图验证用户是否已在当前单元格中选择了日期。如果他没有选择日期,请将光标位置设置为他必须选择日期的行。谢谢!!!,将委托方法更改为textViewSHouldBeginEditing而不是textViewDidBeginEditing使代码按照我们的要求工作。。。再次感谢。。除此之外,我们需要知道,有没有什么方法可以将光标设置为一个控件???因为第一响应者就是这样做的方法。但是,它通常在委托方法内部不起作用,而委托方法本身是由响应程序更改触发的。在委托方法中放置断点并查看调用堆栈。。