iOS UITableViewFirst首先点击滚动到顶部或底部后点击忽略

时间:2016-08-02 15:29:31

标签: ios swift uitableview scroll

当我在UITableViews中滚动到顶部或底部时,无法识别下一个Tap。这一点也可以通过不会消失的ScrollIndicator识别出来。 ScrollIndicator在滚动后很快就会消失,但在这种情况下,它会一直保持可见,直到第一个Tap。

我的UIScrollViews在另一个UIScrollView或UITableView中没有嵌套,它们成为所有类似问题的原因。尽管如此,我从这些问题中尝试了很多可能的解决方案。但没有任何帮助

我正在使用: iOS部署目标8.0。实际的iPhone设备有iOS 9.3.1。 自动布局。弹跳=假。垂直滚动。

我尝试的事情:

我启用Bounce只是为了测试。但即使启用Bouncing,我也可以生成案例,ScrollView进入状态,下一次点击被忽略。所以我认为弹跳不是罪魁祸首

使用"调整滚动视图插图"。 使用" ExtendEdges:..."标志。 更改了"延迟内容触动"

我尝试重写touchesCanceled并通过调用touchesBegan和touchesEnded以编程方式启动我自己的第一个Tap作为解决方法,但它接缝这不算真正的Tap。

因此...

我还能尝试什么?如何更好地以编程方式点击? (但请记住AppReview)

修改

我被要求发布一些相关代码。

好吧,我认为我不应该发布故事板设置,因为故事板设置有点如上所述。除此之外,每个带有UITableViews的UIViewController都有一个UINavigationItem但没有自己的UINavigationController。这对于实际的顶级位置可能很重要。这就是为什么我使用"调整滚动视图插图"选项。但我不确定从中可以采取什么。

这是我在UITableViewController中的viewDidLoad

override func viewDidLoad() {
    self.view.backgroundColor = UIColor.clearColor()

    super.viewDidLoad()

    // loading myDataList

    self.clearsSelectionOnViewWillAppear = false
}

在我的AppDelegate中:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {            
    UITableView.appearance().bounces = false

    UIScrollView.appearance().indicatorStyle = UIScrollViewIndicatorStyle.White

    return true
}

这是tableView委托,我在UITableViewClasses中使用:

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return myDataList!.count
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "PlantTableViewCell"
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! PlantTableViewCell
    // ... setting up the cell
    return cell
}

通常触发的水龙头的动作也只是故事板中定义的segues。通常会调用以下代码,除非用户滚动到顶部或底部:

override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {
    // not called, when scrolled to top or bottom
    if identifier == ... 
}

我不知道还有什么相关的。

0 个答案:

没有答案