Objective c 如何在UITableViewCell内设置UITextView的光标位置
我们正在UITableViewCell中进行验证。该单元格有一个文本视图和一个自定义按钮,点击该按钮时会打开一个包含UIDatePickerView的弹出窗口&用户将选择日期。在这里选择日期是强制性的。因此,我们使用下面的代码进行了验证。在紧邻下一行的单元格内的textView的textViewBeginEditing委托方法中。i、 e当用户单击下一行的textView时,将验证前一行的值。 在这里,验证似乎正在工作,但光标在当前单元格中仍会闪烁,并且不会移动到正在验证的前一个单元格Objective c 如何在UITableViewCell内设置UITextView的光标位置,objective-c,ios,ipad,uitableview,Objective C,Ios,Ipad,Uitableview,我们正在UITableViewCell中进行验证。该单元格有一个文本视图和一个自定义按钮,点击该按钮时会打开一个包含UIDatePickerView的弹出窗口&用户将选择日期。在这里选择日期是强制性的。因此,我们使用下面的代码进行了验证。在紧邻下一行的单元格内的textView的textViewBeginEditing委托方法中。i、 e当用户单击下一行的textView时,将验证前一行的值。 在这里,验证似乎正在工作,但光标在当前单元格中仍会闪烁,并且不会移动到正在验证的前一个单元格 UITa
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使代码按照我们的要求工作。。。再次感谢。。除此之外,我们需要知道,有没有什么方法可以将光标设置为一个控件???因为第一响应者就是这样做的方法。但是,它通常在委托方法内部不起作用,而委托方法本身是由响应程序更改触发的。在委托方法中放置断点并查看调用堆栈。。