2016-02-12 3 views
2

UIButton s внутри scrollview не стреляют. Я попытался установить exclusiveTouch delaysTouchesEvent, но ничего не помогло.Кнопка без стрельбы Событие внутри ScrollView

class TestViewController: UIViewController { 

    @IBOutlet weak var scrollView: UIScrollView! 
    var categoryArr = ["Jack","Mark","Down","Bill","Steve"] 
    var buttonColors = [UIColor.greenColor(), UIColor.blueColor(), UIColor.blackColor(), UIColor.cyanColor(), UIColor.magentaColor()] 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let scrollingView = colorButtonsView(CGSizeMake(150,scrollView.frame.size.height), buttonCount: 5) 
     scrollView.contentSize = scrollingView.frame.size 
     scrollView.addSubview(scrollingView) 
     scrollView.showsVerticalScrollIndicator = false 
     scrollView.delegate = self 
     scrollView.pagingEnabled = true 
     scrollView.indicatorStyle = .Default 
     scrollView.canCancelContentTouches = false 
     scrollView.delaysContentTouches = false 
     scrollView.exclusiveTouch = true 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    func colorButtonsView(buttonSize:CGSize, buttonCount:Int) -> UIView { 
     let buttonView = UIView() 
     buttonView.frame.origin = CGPointMake(0,0) 
     let padding = CGSizeMake(10, 10) 
     buttonView.frame.size.width = (buttonSize.width + padding.width) * CGFloat(buttonCount) 
     var buttonPosition = CGPointMake(padding.width * 0.5, padding.height) 
     let buttonIncrement = buttonSize.width + padding.width 
     for i in 0...(buttonCount - 1) { 
      var button = UIButton.buttonWithType(.Custom) as! UIButton 
      button.frame.size = buttonSize 
      button.frame.origin = buttonPosition 
      buttonPosition.x = buttonPosition.x + buttonIncrement 
      button.setTitle(categoryArr[i], forState: UIControlState.Normal) 
      button.addTarget(self, action: "showTheNextButton:", forControlEvents: UIControlEvents.TouchUpInside) 
      button.backgroundColor = buttonColors[i] 
      buttonView.addSubview(button) 
     } 
     return buttonView 
    } 

    func showTheNextButton(sender:UIButton){ 
     print("ok show the next button") 
    } 
} 

extension TestViewController:UIScrollViewDelegate{ 
    func scrollViewDidEndDecelerating(scrollView: UIScrollView) { 

     let index = round(scrollView.contentOffset.x/scrollView.frame.size.width) 
     print(index) 
    } 
} 

enter image description here

+0

Нет сообщений об ошибках в консоли? У меня были аналогичные проблемы с неконтролируемыми элементами управления в последнее время, и причиной были неправильно настроенные ограничения. –

+0

nope nothing .... у меня есть scrollview в раскадровке .. я выложу снимок экрана из него –

+0

Вы уже взяли UIScrollview в раскадровке с подключением IBOutlet, а затем в чем цель этой строки? scrollView.addSubview (scrollingView) – kb920

ответ

1

Пожалуйста, сделайте следующие изменения:

self.scrollView.canCancelContentTouches = true 
self.scrollView.delaysContentTouches = true 

В вашей for -loop переместите let buttonView = UIView() к:

@IBOutlet weak var scrollView: UIScrollView! 
var categoryArr = ["Jack","Mark","Down","Bill","Steve"] 
var buttonColors = [UIColor.greenColor(), UIColor.blueColor(), UIColor.blackColor(), UIColor.cyanColor(), UIColor.magentaColor()] 
let buttonView = UIView() 

Затем затем в вашем for изменить следующее:

Изменить эту строку: buttonView.frame.origin = CGPointMake(0,0) до

self.buttonView.frame = self.scrollView.bounds 
self.buttonView.userInteractionEnabled = true 

Добавление:

Комментарий это: //self.scrollView.exclusiveTouch = true

Я взял на себя смелость тестирования; штрихи должны регистрироваться на кнопках, а прокрутка также должна работать горизонтально. Наслаждаться.

+2

Вау, это было что-то, что я потерял надежду .. Заставка жизни спасибо –

+2

о, глупо google на этот раз :) –

1

UIButton не принимает штрихи, если она лежит вне границ одного из своих superviews. Убедитесь, что все ваши взгляды размер и положение вы ожидаете, что они будут

+0

, пожалуйста, скажите, где я его пропустил. .. весь код в вопросе. Осталось, чтобы я ударил головой. –

+0

@swift BUTCHER попытается добавить видимые привязки к представлениям, чтобы проверить их границы. –

+0

вид контейнера здесь проблема ... я узнал –

Смежные вопросы