Почему pageControl не нажимает точку, чтобы изменить страницу с помощью swift?

Я практикую использовать scrollview и pagecontrol как баннер AD. Но у меня есть проблема, что я нажимаю точку в pagecontrol, чтобы не изменить страницу. И я нажимаю регион из управления страницей, страница успешно меняется. Что со мной не так?

class ViewController: UIViewController, UIScrollViewDelegate {

var myScrollView: UIScrollView!
var pageControl: UIPageControl!
var fullSize :CGSize!

override func viewDidLoad() {
    super.viewDidLoad()

    fullSize = UIScreen.main.bounds.size

    myScrollView = UIScrollView()
    myScrollView.frame = CGRect(x: 0, y: 20,width: fullSize.width, height: fullSize.height - 20)
    myScrollView.contentSize = CGSize(width: fullSize.width * 5, height: fullSize.height - 20)
    myScrollView.showsHorizontalScrollIndicator = false
    myScrollView.showsVerticalScrollIndicator = false
    myScrollView.bounces = true
    myScrollView.delegate = self
    myScrollView.isPagingEnabled = true
    self.view.addSubview(myScrollView)

    pageControl = UIPageControl(frame: CGRect(x: 0, y: 0, width: fullSize.width * 0.85, height: 50))
    pageControl.center = CGPoint(x: fullSize.width * 0.5, y: fullSize.height * 0.85)
    pageControl.isUserInteractionEnabled = true
    pageControl.numberOfPages = 5
    pageControl.currentPage = 0
    pageControl.currentPageIndicatorTintColor = UIColor.black
    pageControl.pageIndicatorTintColor = UIColor.lightGray
    pageControl.addTarget(self,action: #selector(ViewController.pageChanged),for: .valueChanged)
    self.view.addSubview(pageControl)


    var myLabel = UILabel()
    for i in 0...4 {
        myLabel = UILabel(frame: CGRect(x: 0, y: 0, width: fullSize.width, height: 40))
        myLabel.center = CGPoint(x: fullSize.width * (0.5 + CGFloat(i)),y: fullSize.height * 0.2)
        myLabel.font = UIFont(name: "Helvetica-Light", size: 48.0)
        myLabel.textAlignment = .center
        myLabel.text = "\(i + 1)"
        myScrollView.addSubview(myLabel)
    }
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    let page = Int(scrollView.contentOffset.x / scrollView.frame.size.width)
    pageControl.currentPage = page
}

func pageChanged(sender: UIPageControl) {

    var frame = myScrollView.frame
    frame.origin.x = frame.size.width * CGFloat(sender.currentPage)
    frame.origin.y = 0

    myScrollView.scrollRectToVisible(frame, animated:true)
}
}

Источник: исходный код отсюда

0 ответов

Другие вопросы по тегам