2012-04-11 49 views
6

我想在UITextView上使用addTarget:action(UITextField或UIButton)。我们可以在UITextView上采用哪些addTarget操作?

我想在UITextView上调用方法。

请给一些可能的解决方案......

谢谢你......

UITextView *TXT_First_Tag = [[UITextView alloc] initWithFrame:CGRectMake(5, textPosY, 350, 65)]; 
TXT_First_Tag.backgroundColor = [UIColor whiteColor]; 
TXT_First_Tag.font = [UIFont fontWithName:@"Arial-BoldMT" size:30.0]; 
TXT_First_Tag.editable =YES; 
TXT_First_Tag.tag = i; 
TXT_First_Tag.textColor = [UIColor blackColor]; 


[TXT_First_Tag addTarget:self action:@selector(C6Loop) forControlEvents:UIControlEventEditingDidEnd]; // This Line I want to use, it's working fine on textfield... 
[scrollview addSubview:TXT_First_Tag]; 
+0

我知道这个问题是旧的引用单元格中的代表,但我想我会指出,'addTarget的事实:动作:forControlEvents:'方法在'继承UITontrol“中的”UITextField“和”UIButton“。 'UITextView'不从'UIControl'继承。所以标题中问题的答案是没有。 – 2013-08-14 14:35:25

回答

10

为此我们使用UITextView委托方法。

把它放在你的代码中。

UITextView *TXT_First_Tag = [[UITextView alloc] initWithFrame:CGRectMake(5, textPosY, 350, 65)]; 
TXT_First_Tag.backgroundColor = [UIColor whiteColor]; 
TXT_First_Tag.font = [UIFont fontWithName:@"Arial-BoldMT" size:30.0]; 
TXT_First_Tag.editable =YES; 
TXT_First_Tag.delegate = self; 
TXT_First_Tag.tag = i; 
TXT_First_Tag.textColor = [UIColor blackColor]; 
[scrollview addSubview:TXT_First_Tag]; 

- (void)textViewDidBeginEditing:(UITextView *)textView{ 
    NSLog(@"Begin editing"); 
} 

- (void)textViewDidEndEditing:(UITextView *)textView{ 
    NSLog(@"DidEndEditing"); 
} 

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{ 
    NSLog(@"ShouldBeginEditing"); 
    return TRUE; 
} 

- (BOOL)textViewShouldEndEditing:(UITextView *)textView{ 
    NSLog(@"ShouldEndEditing"); 
    return TRUE; 
} 
0

肯定得到一个更好的办法“的编辑没有结束”的消息是通过实现UITextViewDelegate

TXT_First_Tag.delegate = self; 

... 

- (void)textViewDidEndEditing:(UITextView *)textView { 
    // stuff you'd put in C6Loop 
2

如果u想要做一些任务编辑文本视图比之前使用

-(void)textViewDidBeginEditing:(UITextView *)textView {} 

,或者如果你想编辑的文本视图后做多使用

-(void)textViewDidEndEditing:(UITextView *)textView {} 

为您必须添加协议名为UITextViewDelegateviewdidload编写

yourtextview.delegate = self; 
0

CHAPS,即使 您回应并没有直接解决我的问题,它帮助我缩小它。

我在每个单元格中都有textviews,并且需要传递正在编辑的文本视图,所以我可以更新数据库。

简而言之,我将每个单元格中的每个textview标记设置为indexpath.row。然后,我通过textview.tag

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 


    static NSString *MyIdentifier = @"MyIdentifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier]; 
    if (cell == nil) 
    { 
    [[NSBundle mainBundle] loadNibNamed:@"frontCell" owner:self options:nil]; 
    cell = mainPageCell; 
    self.mainPageCell = nil; 
    cell.selectionStyle = UITableViewCellSelectionStyleNone; 
    }  


    UITextView *trackDetails; 
    trackDetails = (UITextView *)[cell viewWithTag:22]; 
    trackDetails.text = [[myArray objectAtIndex:indexPath.row] objectAtIndex:0]; 
    trackDetails.delegate = self; 
    trackDetails.tag = indexPath.row; 


    } 

    - (void)textViewDidEndEditing:(UITextView *)textView 
    { 
    NSLog(@"%d",textView.tag); 
    UPDATE DATABASE WITH CHANGED TEXT 
    [textView resignFirstResponder]; 
    [self.tableView reloadData]; 
    } 
相关问题