7

(UITextFieldまたはUIButton)のようにUITextViewでaddTarget:actionを使用したいと思います。

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];
4

4 に答える 4

11

この目的のために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;
}
于 2012-04-11T11:27:27.377 に答える
3

UITextViewDelegateコントローラがプロトコルを実装している場合は、コントローラのインスタンスメソッドでテキストビューのデリゲートとしてコントローラを設定できviewDidLoad()ます。

yourTextView.delegate = self;

次に、テキストビューを編集する前にタスクを実行する場合は、次を使用します。

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

また、テキストビューを編集した後にタスクを実行する場合は、次を使用します。

-(void)textViewDidEndEditing:(UITextView *)textView {}
于 2012-04-11T10:33:23.240 に答える
0

確かに、「編集は終了しました」というメッセージを取得するためのより良い方法は、UITextViewDelegate?を実装することです。

TXT_First_Tag.delegate = self;

... 

- (void)textViewDidEndEditing:(UITextView *)textView {
  // stuff you'd put in C6Loop
于 2012-04-11T09:55:24.603 に答える
0

チャップス、あなたの回答は私の問題を直接解決しませんでしたが、それは私がそれを絞り込むのに役立ちました。

各セルにテキストビューがあり、データベースを更新できるように、編集中のテキストビューを渡す必要がありました。

一言で言えば、各セルの各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];
    }
于 2012-06-07T01:30:01.170 に答える