2012-04-11 11 views
6

addTarget:UITextFieldまたはUIButtonのようなUITextViewのアクションを使用したいと思います。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があるという事実を指摘したいと思ったことを参照しますUITextField'と 'UIControl'からの' UIButton'です。 'UITextView'は' UIControl'から継承しません。したがってタイトルの質問に対する答えはnoneです。 –

答えて

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)textViewDidEndEditing:(UITextView *)textView {} 

を使用するよりも、あなたのテキストビューを編集した後行いたい場合

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

かを使用するよりも、あなたのテキストビューを編集する前に、いくつかのタスクを実行したい場合UITextViewDelegateという名前のプロトコルを追加する必要があります。viewdidload書き込み

yourtextview.delegate = self; 
0

チャップスは、あなたの応答が直接私の問題を解決していなかった にもかかわらず、それは私がそれを絞り込む助けました。

各セルにtextviewsがあり、どのテキストビューを編集していたのかを渡す必要があり、データベースを更新できました。

簡単に言えば、各セルの各textviewタグをindexpath.rowに設定します。アクション:forControlEvents: `メソッドは`に継承され、私はその後、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]; 
    } 
関連する問題