2016-05-26 7 views
4

私はUITableを持っていて、複数のラベルとテキストビューを持っています。私はtouchupinsideイベントがトリガーされたときに呼び出されるメソッドが必要です。私はtargetForActionを使用しますが、私はTextViewには、全体的に迅速にUITextViewとUILabelにターゲットを追加

編集することはできませんit.AndでtouchUpInsideイベントを指定することはできません、私はボタンがTextViewのラベルによって行われなければaddTargetで何をしたいです。私は

+0

クリック可能なラベルの場合https://github.com/TTTAttributedLabel/TTTAttributedLabelは他のものと連携するのに最適なソースです。それ以外の場合、UItextViewは、デリゲートの呼び出しで任意のメソッドを呼び出すことができるロジックに基づいて編集を開始すると、 –

+0

'UITapGestureRecognizer'を追加しますか? 'tableView:didSelectRowAtIndexPath:'十分ではありませんか? – Larme

+0

'didSelectRowAtIndexPath:'の@Larme、 'UITextView'のタッチされたオブジェクトを知る方法はありますか。 –

答えて

7

Gestureを追加し、TextViewの

ため

let tap = UITapGestureRecognizer(target: self, action: #selector(self.doubleTapped(_:))) 
    tap.numberOfTapsRequired = 1 
    yourlabel.tag = indexPath.row 
    yourlabel.isUserInteractionEnabled = true 
    yourlabel.addGestureRecognizer(tap) 

呼び出し方法などの

func doubleTapped(_ recognizer: UITapGestureRecognizer) { 

     print(recognizer.view!.tag) 

} 

を追加してみてください助けてくださいyourTextView.delegate = self

func textViewDidChange(textView: UITextView) { 
    //do continue your work 
} 
+0

チャームのように働いた!どうもありがとうございます! @ Anbu.Karthik –

+0

@PrashanthNarasimha - ようこそ... –

+0

@ lou-francoが別の答えで示唆したように 'yourlabel.userInteractionEnabled = true'も必要な場合があります。 – vlz

2
  1. userInteractionEnabledがtrueに設定されていることを確認してください。その後

、どちらか

  1. ビューをサブクラス化し、必要な動作を実装するtouchesBegan:withEvent:を実装UITapGestureRecognizer

    - または -

  2. を使用してください。

0

UITableViewControllerには、次の機能を追加できます。 テーブルビューのセルはちょうどボタンではないことに注意してください。その理由はあなただけがaddTargetにすることはできません。この方法では、現在の表のセルを選択し、それに応じて動作します。

class TableView: UITableViewController { 

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    tableView.deselectRowAtIndexPath(indexPath, animated: true) 

    switch indexPath.row { 
    case 1: // Change password 
     print("Change password") 
    ....// Add your cases 
    default: 
     break 
    } 
    } 
} 

注:また、セル内のUIButtonを追加することができますが、私はそれは素晴らしい練習ではないと思います。

関連する問題