1

我们正在做一个验证UITableViewCell。该单元格有一个textView和一个自定义按钮,单击该按钮会打开一个包含 a 的弹出窗口,UIDatePickerView用户将选择日期。此处选择日期是强制性的。所以我们使用下面的代码进行了验证。在下一行的单元格内部的textViewBeginEditing委托方法中。textView即,当用户单击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;
                              }
                          }


                      }
                  }
              }
          }

请让我知道需要做什么才能将光标位置移至正确的单元格。

4

1 回答 1

0

你的代码不是很清楚,但是,我猜你是在里面执行你的验证textViewDidEndEditing

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

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextViewDelegate_Protocol/Reference/UITextViewDelegate.html#//apple_ref/occ/intfm/UITextViewDelegate/textViewShouldEndEditing

于 2012-12-11T08:01:16.280 回答