2016-09-26 4 views
0

UITableViewCellのuserInteractionEnabledである親ビューが設定されている間、サブビュー(この場合はUITextFields)を有効にしておく(通常の方法で編集可能、つまりtextFieldとキーボードが表示されます)偽にする。subviews superview userinteraction disabled swift

さらに説明する - 1. xibから初期化されたUITableViewCellがあります。

  1. このセルの中には、3つのUITextFieldとUIButtonがあります。
  2. セルのやりとりを無効にする必要があります(didSelectRowAtIndexPathを避けるため)。この部分は問題ありません。
  3. 手順3の後、セル内のすべてのサブビューも無効になっています。
  4. しかし、私はtextFieldsの中に何らかのテキストを入力し、それに何らかのアクションを加えてボタンをタップする必要があります。私がこれまでになかった何

: 1. userInteractionEnabledを使用し、セルのためにfalseに設定 -

myPersonalInfoExpandedCell.userInteractionEnabled = false 

2つのテキストフィールドfirstNameTextとlastNameTextを、私はuserInteractionを有効にし、それがbecomeFirstResponderにfirstNameText設定

(myPersonalInfoExpandedCell as! PersonalInfoExpandedCell).firstNameText.userInteractionEnabled = true 
(myPersonalInfoExpandedCell as! PersonalInfoExpandedCell).lastNameText.userInteractionEnabled = true 
(myPersonalInfoExpandedCell as! PersonalInfoExpandedCell).firstNameText.becomeFirstResponder() 

問題はuserInteractionEnabled私はuserInteractionEnabledは表のための偽のための疑われた動作していない、テキストフィールドのために、ありますViewCell。 becomeFirstResponder()firstNameTextで動作していますが、セル内のすべてのUI要素と対話する必要があります。

どうすればいいですか?誰か助けてもらえますか?

答えて

2

cellSelectionを無効にするには、willSelectRowAtIndexPathデリゲートメソッドを実装し、選択したくないセルについてはnilを返します。いくつかの条件で選択を無効にしたいと言うので、選択を無効にする行のindexPathがあるとします。これらのindexPathに対してnilを返すだけです。次のコードを参照してください。

-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
if (indexPath == self.MyIndex) //Check for the index path for the cell you want to disable selection for 
    return nil; 
else 
    return indexPath; 
} 

また、セルがハイライト表示されないようにするには、これを行います。 NOセル上:それをあなたがsetUserInteractionEnabledする必要はありませんこの方法をやって

[cell setSelectionStyle:UITableViewCellSelectionStyleNone]; 

。あなたがセルにdidSelectRowAtIndexPathのデリゲートメソッドをタップするこの方法では呼び出さないであろうと、あなたのテキストフィールドは、まだ

編集

を有効にされるだろう上記のコード

func tableView(tableView: UITableView, willSelectRowAtIndexPath indexPath: NSIndexPath) -> NSIndexPath? { 
if (indexPath == self.MyIndex) //Check for the index path for the cell you want to disable selection for 
    return nil; 
else 
    return indexPath; 
} 


cell.selectionStyle = .None 
+0

の迅速なバージョンは次のとおり答えShayanありがとう!選択したくないセルに対してfalseを返しますか?私はそれを得ていませんでした。例を引用してください。 –

+0

@LohithKorupolu私は自分の答えを編集しました。それを見てみましょう。まだ質問が残っている場合はお気軽に –

+0

私のtextFieldsを編集できますが、同じビュー内にUIButtonの問題があります。私がボタンをタップすると、例外が発生する libC++ abi。dylib:NSException型のキャッチされていない例外で終了する –

関連する問題