2012-04-11 8 views
6

Voglio usare addTarget: azione su UITextView come su (UITextField o UIButton).Quali azioni addTarget possiamo assumere su UITextView?

Voglio chiamare un metodo su UITextView.

si prega di dare qualche possibile soluzione ...

Grazie ...

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

So che questa domanda è vecchio, ma ho pensato di sottolineare il fatto che i 'addTarget: AZIONE: forControlEvents:' metodo è ereditata ' UITextField' e 'UIButton' da' UIControl'. 'UITextView' non eredita da' UIControl'. Quindi la risposta alla domanda nel titolo non è nessuna. –

risposta

10

Utilizziamo a tale scopo metodi delegati UITextView.

Inserire questo nel codice.

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

Sicuramente un modo migliore di ottenere la "modifica è finita", il messaggio è quello di attuare la UITextViewDelegate?

TXT_First_Tag.delegate = self; 

... 

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

se volete fare qualche operazione prima di modificare la visualizzazione del testo che utilizzare

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

o se si vuole fare dopo avere modificato la visualizzazione del testo che utilizzare

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

per questo devi aggiungere il protocollo UITextViewDelegate e in viewdidload scrivere

yourtextview.delegate = self; 
0

Chaps, Anche se le risposte non hanno risolto direttamente il mio problema, mi ha aiutato a restringere il campo.

Ho visualizzazioni di testo in ogni cella e ho bisogno di passare quale vista di testo è stata modificata in modo da poter aggiornare il database.

In poche parole, ho impostato ogni tag textview in ogni cella su indexpath.row. Ho quindi fare riferimento quella cella nel delegato dal 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]; 
    } 
Problemi correlati