0

UITableView があり、UITableViewCell の UILabel の 1 つとして phonenumber を取得しました。その特定のラベルをクリックすると、その特定の番号に電話をかけることができるはずです。UILabel がクリックに応答するために、UITapGesture.But呼び出される番号を検出する [送信者タグ] エラーをスローする:" [UITapGestureRecognizer タグ]: 認識されないセレクターがインスタンスに送信されました"

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  lblphone = [[UILabel alloc] initWithFrame:CGRectZero];
            lblphone.tag = 116;
            lblphone.backgroundColor = [UIColor clearColor];
            [lblphone setFont:[UIFont fontWithName:@"Helvetica" size:12]];
            [lblphone setLineBreakMode:UILineBreakModeWordWrap];
            [lblphone setUserInteractionEnabled:YES];
            UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelButton:)];
            [tapGestureRecognizer setNumberOfTapsRequired:1];
            [lblphone addGestureRecognizer:tapGestureRecognizer];
            [tapGestureRecognizer release];
            [cell addSubview:lblphone];


}

 CGSize constraint5 = CGSizeMake(320, 2000.0f);
                            CGSize size5=[phone sizeWithFont:[UIFont fontWithName:@"Helvetica" size:14] constrainedToSize:constraint5 lineBreakMode:UILineBreakModeWordWrap];
                            lblphone =(UILabel *)[cell viewWithTag:116];
                            [lblphone setFrame:CGRectMake(10,businessname.frame.size.height+businessname.frame.origin.y,320, size5.height)];
                            lblphone.textAlignment=UITextAlignmentLeft;
                            lblphone.backgroundColor=[UIColor clearColor];
                            lblphone.numberOfLines=0;
                            lblphone.lineBreakMode=NSLineBreakByClipping;
                            lblphone.font=[UIFont fontWithName:@"Helvetica" size:14];
                            lblphone.text=[NSString stringWithFormat:@"%@ ",phone ];
                            [lblphone sizeToFit];
}

-(IBAction)labelButton:(id)sender
{

   selectedrowCall=[sender tag]; //error at this line

   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://%@",[lblphone.text]]];//error at this line also :Expected Identifier

}

tableviewcellでクリックされた特定の番号にのみ電話をかけるにはどうすればよいですか? シミュレーターから通話をテストできるか確認したいのですが?

4

1 に答える 1

2

問題は最初は次のコードにあります。

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(labelButton:)];

a を初期化してUITapGestureRecognizerそのアクションを設定する場所ですlabelButton:が、パラメーターを指定せず、メソッドlabelButton:が引数を要求しているため、 aの代わりにidタップジェスチャ認識エンジンがメソッドに渡されます。応答できないためにクラッシュするのはこのためです。に、UI オブジェクトではありません。labelButtonUIButtonUITapGestureRecognizertag

したがって、実際には非常に簡単に修正するには、次のコードを使用します。

-(IBAction)labelButton:(UITapGestureRecognizer *)sender
{
   selectedrowCall=[[sender view] tag]; // here we are referencing to sender's view which is the UILabel so it works!
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://%@",[lblphone text]]];    
}

これが機能した場合は、投票/チェックを入れてください!

于 2012-12-29T06:58:15.883 に答える