2013-08-05 74 views
1

我在我的tableview的單元格的oe中添加了一個文本框。 現在我想比較一下,如果被觸摸的對象是文本框或不是。對於我正在使用 -從UITableviewCell獲取視圖對象

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event 
    { 
     UITouch *touch = [[event allTouches] anyObject]; 
    } 

方法。在這裏,我必須得到在UITableview單元格中觸摸的視圖是textfield。 我怎樣才能得到它?我是這個結構。請幫忙。

+0

爲什麼你想要在touch中觸摸touch:方法?爲什麼不使用uitextfield的textfield或委託方法使用outlet? –

回答

0
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event 
{ 
    UITouch *touch = [[event allTouches] anyObject]; 
    if([[touch view] isKindOfClass:[UITextField class]]) 
    { 
     UITextField *txtField = (UITextField *) [touch view]; 
     //UITextField object 
    } 
} 
1

使用文本字段的委託方法:

-(void)textFieldDidBeginEditing:(UITextField *)textField 
1

我認爲最好的方式實現這一目標將是:

  1. 創建UITableViewCell子類有UITextField作爲一個子視圖。將其定義爲IBOutlet並通過界面構建​​器將其掛起。
  2. 創建委託協議以通知委託人(在您的情況下,它可能是處理UITableViewDataSource的同一個班級)。
  3. 聲明UITableViewCell子類爲UITextFieldDelegate並將其掛接到您創建的UITextField。經由IB
  4. 實施

    - (無效)textFieldDidBeginEditing:(的UITextField *)的TextField { [self.delegate textFieldWasTapped]; }

現在,您可以在一個textFieldWasTapped事件的主控制器通知。沒有必要檢查它是否確實來自UITextField對象,因爲只有這種類型的實例才能夠觸發此調用。