相关疑难解决方法(0)

在UIScrollView中关闭键盘

好吧,我有几个UITextFields并且UITextViews在里面UIScrollView,我想设置键盘在scrollview触摸或滚动时消失(当然,当你在文本字段/视图内部触地时).

我目前尝试这样做是替换UIScrollView子类,并将其设置为在touchesBegan方法内调用removeKeyboard函数(在主视图控制器中定义).但是,这只会移除键盘以进行正常触摸,而不是仅在滚动视图时.那么,删除内部键盘的最佳方法是UIScrollView什么?

在此先感谢您的帮助.

keyboard objective-c uiscrollview ios swift

59
推荐指数
5
解决办法
5万
查看次数

ScrollView手势识别器吃掉所有触摸事件

UIScrollView添加了一个单击手势识别器来显示/隐藏一些UI叠加使用:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[scrollView addGestureRecognizer:singleTap];
Run Code Online (Sandbox Code Playgroud)

和:

- (void)handleTap:(UITapGestureRecognizer *)sender {
    // report click to UI changer
}
Run Code Online (Sandbox Code Playgroud)

我在底部添加了一个简单的表格视图UIScrollView.一切正常(水平和垂直滚动)但问题是点击仅由手势识别器(上图)识别,而不是由简单的表格视图识别.如果我删除注册手势监听器的行,一切正常,表视图会通知自己.

这就好像手势识别器功能"吃掉"表视图上的点击事件并且不向下传播它们.

任何帮助表示赞赏

objective-c uiscrollview ios uitapgesturerecognizer

39
推荐指数
5
解决办法
5万
查看次数

滚动视图中的手势识别器不起作用

我将所有 UIElement 移动到滚动视图中以避免加载 UIViewcontroller。但现在视图上的 GestureRecognizers 不再起作用了。

我的视图层次结构如下所示:

  • UIViewController(单事件控制器)
    • UIScrollView (EventScrollView)
      • UIView(内容视图)
        • UILabel、UIView、UITableView 等

这看起来是一个常见问题,因为我在 Stackoverflow 上发现了很多类似的问题: 示例 1 示例 2。尽管如此,我还是没能解决我的案子。

我的EventScrollView中的简化代码如下所示:

let locationLabel: UILabel = {
    let label           = UILabel()
    label.text          = "Standort"
    label.isUserInteractionEnabled = true //Important!
    return label
}()

override init(frame: CGRect) {
    super.init(frame: frame)
    self.isUserInteractionEnabled = true //not needed!
    contentView.isUserInteractionEnabled = true //Important!
}

func setupViews() {
    guard let parent = parentVC else { return }
    let locationTap = UITapGestureRecognizer(target: parent, action: #selector(parent.openInGoogleMaps))
    locationTap.cancelsTouchesInView = false …
Run Code Online (Sandbox Code Playgroud)

uiscrollview uiview uigesturerecognizer ios swift

2
推荐指数
1
解决办法
1670
查看次数