1

私のビューには 1 つのカスタム テーブル名 tbltask があり、on touch begin と on touch move メソッドで lable を動的に作成しています。

 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{


    [super touchesBegan:touches withEvent:event];



     self.scrollEnabled=NO;
    CGPoint point = [[touches anyObject] locationInView:[self superview]]; 
    CGPoint pointtask=[[touches anyObject] locationInView:self];
    NSIndexPath *indexPath = [self indexPathForRowAtPoint:pointtask];
    rowid=indexPath.row;




      app.sublable=[[UILabel alloc] initWithFrame:CGRectMake((point.x)-145, (point.y)-50, 300, 40)];
    app.sublable.textAlignment=UITextAlignmentRight;
    messagedrag=[app.arraddtask objectAtIndex:rowid];
    app.sublable.text=[NSString stringWithFormat:@" %@",messagedrag.msgsubject];
    app.sublable.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"black.png"]];  

    app.sublable.layer.cornerRadius=8.0;
      app.sublable.layer.borderWidth=4;
     app.sublable.layer.borderColor=[[UIColor lightGrayColor] CGColor];
       app.sublable.textColor=[UIColor whiteColor];

    UIFont *f = [UIFont fontWithName:@"Verdana-Bold" size:16];
    app.sublable.font = f;
    [app.sublable setTextAlignment:UITextAlignmentLeft];

    [self.superview addSubview:app.sublable];



}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesMoved:touches withEvent:event];

    if(app.sublable!=nil)
    {

        [app.sublable removeFromSuperview];

    }
    CGPoint point = [[touches anyObject] locationInView:[self superview]]; 
    NSIndexPath *indexPath = [self indexPathForRowAtPoint:point];

    NSLog(@"............super %f",[self superview].frame.origin.y);

    app.sublable=[[UILabel alloc] initWithFrame:CGRectMake((point.x)-145, (point.y)-50, 300, 40)];
    app.sublable.textAlignment=UITextAlignmentRight;
    messagedrag=[app.arraddtask objectAtIndex:rowid];
    app.sublable.text=[NSString stringWithFormat:@" %@",messagedrag.msgsubject];

     app.sublable.backgroundColor=[UIColor colorWithPatternImage:[UIImage imageNamed:@"black.png"]];  

    app.sublable.layer.borderWidth=4;
    app.sublable.layer.borderColor=[[UIColor lightGrayColor] CGColor];
    app.sublable.layer.cornerRadius=8.0;
    app.sublable.textColor=[UIColor whiteColor];
       UIFont *f = [UIFont fontWithName:@"Verdana-Bold" size:16];
    app.sublable.font = f;
    [app.sublable setTextAlignment:UITextAlignmentLeft];

    [self.superview addSubview:app.sublable];






}

その結果です。 ここに画像の説明を入力

したがって、tbltask touchBegan メソッドに触れると、作業が開始され、サブジェクトを含む 1 つのラベルがスーパービューに書き込まれます。これは、ご覧のとおり、tbltask がそこにあるメイン ビューです (一番下のタスクはテーブル タスクです)

。 touchesEnded メソッド ::

 - (void)touchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
    {
        //<my stuff>

        [super touchesEnded:touches withEvent:event];
        NSString *taskname=[[NSString alloc] init];
         self.scrollEnabled=YES;
        if(app.sublable!=nil)
        {
           taskname=app.sublable.text;
            [app.sublable removeFromSuperview];
        }

        [taskdelegate droptask:self strtask:taskname];


    }



この件名は上記の表にドロップされます。
ここに画像の説明を入力
それは正常に動作しますが、tbltask を左から右または右から左にタッチすると、何かが発生し、タッチ終了メソッドが呼び出されないため、このようにサブラベルがビューから削除されませんここに画像の説明を入力

。これ...そして、お気づきのように、テーブルタッチでタッチイベントを呼び出しています。この問題で私を助けてください...事前に感謝します。

4

0 に答える 0