2017-10-07 17 views
0

私はこの問題に直面しており、明確な答えは得られません。初めてロードするときにはうまく動作しますが、スクロールするときは選択できません。didSelectRowAtIndexPathは決して呼び出しを受けません。UITableViewがあります。また、私は自分のセルのボタンをクリックしています。しかし、私はまだテーブルビューをスクロールすることができます。これは私のコードです:セルでiOS UITableViewはスクロール時に選択できません

public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
    { 
     let cell : ContactTableViewCell = tableView.dequeueReusableCell(withIdentifier: "ContactCell") as! ContactTableViewCell 

     cell.selectionStyle = .none 
     cell.backgroundColor = UIColor.clear 
     cell.delegate = self 

     let randomNumber = Int(arc4random_uniform(UInt32(colorsArray!.count))) 

     if(!shouldUseFilteredResults) { 

      cell.setFilteredContents(_with: addressBookArray![indexPath.row], theme: themeStyle!, randomColor: colorsArray![randomNumber]) 
     } 
     else { 

      cell.setFilteredContents(_with: filteredAddressBook[indexPath.row], theme: themeStyle!, randomColor: colorsArray![randomNumber]) 

      cell.contactNameLabel.attributedText = self.highlightSearchResult(resultString: cell.contactNameLabel.text!) 
     } 


     return cell 
    } 

public func setFilteredContents (_with contact : [String : Any], theme : Theme, randomColor : UIColor) 
    { 
     contactDictionary = contact; 

     contactNameLabel.text = String(describing: contact["FullName"]!) 

     self.setTheme(theme: theme, randomColor: randomColor) 

     if (contact["ImageDataString"] != nil) 
     { 
      let imageData = Data(base64Encoded: contact["ImageDataString"] as! String) 
      let image = UIImage(data: imageData!) 

      let imageView = UIImageView(frame: thumbnailView.bounds) 
      imageView.contentMode = .scaleAspectFill 
      imageView.layer.masksToBounds = true 
      imageView.layer.cornerRadius = CGFloat(imageView.height()/2) 
      imageView.image = image 
      thumbnailView.addSubview(imageView) 
     } 
     else { 

      self.setThumbnail(fullName: contactNameLabel.text!) 
     } 
    } 

private func setThumbnail(fullName : String) 
    { 
     let vibrancy = UIVibrancyEffect(blurEffect: UIBlurEffect(style: .light)) 
     let backgroundView = UIVisualEffectView(effect: vibrancy) 
     backgroundView.frame = thumbnailView.bounds 
     thumbnailView.addSubview(backgroundView) 

     let thumbNailLabel = UILabel(frame: thumbnailView.bounds) 
     thumbNailLabel.font = UIFont.systemFont(ofSize: 13) 
     thumbNailLabel.textColor = UIColor.white 
     thumbNailLabel.textAlignment = .center 

     var initialLettersString = String() 
     let wordsArray = fullName.components(separatedBy: NSCharacterSet.whitespaces) 

     for word in wordsArray 
     { 
      if(word != "") 
      { 
       initialLettersString.append(String(describing: word.characters.first!)) 
      } 
     } 

     if(initialLettersString.characters.count == 1) 
     { 
      initialLettersString = String(initialLettersString[..<initialLettersString.index(initialLettersString.startIndex, offsetBy: 1)]).uppercased() 
     } 
     if(initialLettersString.characters.count > 1) 
     { 
      initialLettersString = String(initialLettersString[..<initialLettersString.index(initialLettersString.startIndex, offsetBy: 2)]).uppercased() 
     } 

     thumbNailLabel.text = initialLettersString as String 

     backgroundView.contentView.addSubview(thumbNailLabel) 
    } 



private func setTheme(theme : Theme, randomColor : UIColor) 
    { 
     let isContactFavorite = contactDictionary?[Constants.TTCIsContactFavoriteKey] as? Bool 

     thumbnailView.backgroundColor = randomColor 

     if(theme == Theme.Light) 
     { 
      contactNameLabel.textColor = UIColor.black 
      lineView.backgroundColor = UIColor.lightGray 

      if(!isContactFavorite!) 
      { 
       favoritesButton.setImage(UIImage(named: "favorite_dark.png"), for: .normal) 
      } 
      else 
      { 
       favoritesButton.setImage(UIImage(named: "favorite.png"), for: .normal) 
      } 
     } 
     else if(theme == Theme.Dark) 
     { 
      contactNameLabel.textColor = UIColor.white 
      lineView.backgroundColor = UIColor.gray 

      if(!isContactFavorite!) 
      { 
       favoritesButton.setImage(UIImage(named: "favorite_white.png"), for: .normal) 
      } 
      else 
      { 
       favoritesButton.setImage(UIImage(named: "favorite.png"), for: .normal) 
      } 
     } 

     for view in thumbnailView.subviews 
     { 
      view.removeFromSuperview() 
     } 
    } 

カスタムセル: Custom Cell

問題である可能性があり何?

+0

選択できないとはどういう意味ですか?選択されたlookまたはdidSelectRowAtIndexPathは呼び出されませんでしたか? – chengsam

+0

残念ですが、didSelectRowAtIndexPathは呼び出されませんでした –

+0

viewdidloadまたは他の場所でテーブルビューのデリゲートとデータソースを正しく設定しましたか?ただ確認する。 – Tuhin

答えて

0

あなたはすべてを正しく行っています。

ボタンの枠を確認するだけで、セルはセル内にあります。

セルの高さが低く、ボタンがセルの境界線から外れることがあります。

+0

cell.delegate = viewDidLoad()内のself? –

0

これも理由はビュー階層 にUITapRecognizer秒で、デフォルトのタッチイベントをオーバーライドの助けをUITableviewParent View

+0

すべてのタップ認識機能を削除しようとしましたが、もう一度試してみましょう –

0

みんなありがとうにに設定された任意のtap recognizer Sを削除することができます。問題は私がCustomCellに使用していたSwipeCellKitでした。それを削除すると解決しました!