- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 UINavigationItem,我将它的 titleView 设置为一个嵌入了 UILabel 和 UIImageView 的 UIView。我正在尝试将 UITapGestureRecognizer 添加到 View 中,但它似乎不起作用。任何解决方案?此外,将 gestureRecognizer 添加到整个 navigationBar 不是一个选项,因为我有一个 rightBarButtonItem 并且想使用后退按钮。
这是我的代码:
func configureTitleView() {
guard let profile = profile else {
// Pop navController
return
}
let titleView = UIView()
titleView.frame = CGRect(x: 0, y: 0, width: 100, height: 40)
let containerView = UIView()
containerView.translatesAutoresizingMaskIntoConstraints = false
titleView.addSubview(containerView)
let profileImageView = UIImageView()
profileImageView.translatesAutoresizingMaskIntoConstraints = false
profileImageView.contentMode = .scaleAspectFill
profileImageView.clipsToBounds = true
let imageURL = URL(string: profile!.firstProfilePicture!)
profileImageView.sd_setImage(with: imageURL)
containerView.addSubview(profileImageView)
profileImageView.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true
profileImageView.centerYAnchor.constraint(equalTo: containerView.centerYAnchor).isActive = true
profileImageView.widthAnchor.constraint(equalToConstant: 36).isActive = true
profileImageView.heightAnchor.constraint(equalToConstant: 36).isActive = true
profileImageView.layer.cornerRadius = 36 / 2
let nameLabel = UILabel()
containerView.addSubview(nameLabel)
nameLabel.text = profile!.displayName!
nameLabel.textColor = .white
nameLabel.translatesAutoresizingMaskIntoConstraints = false
nameLabel.leftAnchor.constraint(equalTo: profileImageView.rightAnchor, constant: 8).isActive = true
nameLabel.centerYAnchor.constraint(equalTo: profileImageView.centerYAnchor).isActive = true
nameLabel.rightAnchor.constraint(equalTo: containerView.rightAnchor).isActive = true
nameLabel.heightAnchor.constraint(equalTo: profileImageView.heightAnchor).isActive = true
containerView.centerXAnchor.constraint(equalTo: titleView.centerXAnchor).isActive = true
containerView.centerYAnchor.constraint(equalTo: titleView.centerYAnchor).isActive = true
self.navigationItem.titleView = titleView
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.openProfile))
tapGesture.numberOfTapsRequired = 1
titleView.addGestureRecognizer(tapGesture)
titleView.isUserInteractionEnabled = true
}
最佳答案
从 iOS 11 开始,使用 UIBarButtonItem(customView:)
作为 UIBarButtonItem
添加到工具栏的 View 现在使用自动布局进行布局。这包括通过 UIViewController
的 navigationItem.titleView
属性添加到 UINavigationBar
的标题 View 。您应该在 titleView
上添加大小限制。例如:
titleView.widthAnchor.constraint(equalToConstant: 100).isActive = true
titleView.heightAnchor.constraint(equalToConstant: 40.0).isActive = true
否则,自动布局将使用标题 View 的固有内容大小,即 CGSize.zero
。手势被屏蔽到它们所附加的 View 的边界,即使该 View 的 subview 不是。因为没有约束的 titleView
的边界是 CGRect.zero
它永远不会触发。添加约束并按预期工作。
有关更多信息,请参阅 WWDC 2017 session Updating your app for iOS 11 .
关于ios - 在 titleView 中查看 Swift UITapGesture 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46867592/
问题: 我正在尝试使用UITapGestureRecognizer更改 View 的背景颜色。本质上,当用户点击时,我希望背景改变颜色,并且在释放或完成时,背景颜色返回到零,或者没有背景颜色。 此操作
试图弄清楚如何将字符串参数传递给我使用选择器调用的方法。它也恰好是我编写的响应单个 Tap 手势的方法 我的方法是这样的: -(void)handleSingleTap:(UITapGestureRe
我有一个 ImageView ,它看起来像一个 2d 驱动轮,但它不是游戏,而是一个关于旋转物体的学校项目。通过在 ImageView 上移动手指,uilabel 应根据手指的位置旋转。 所以对于我创
为了稍微精简我的 viewcontroller,我想将 ui 元素和相应的函数移动到一个子类中。但是我的手势不起作用。我该如何解决这个问题? MyViewController.swift class
因此,我遇到了一个问题,我添加了 UITapGestureRecognizer 来放弃关联文本字段的第一响应者状态,因此键盘将会消失。 let tap: UITapGestureRecognizer
如下图所示,我的视频几乎覆盖了整个屏幕。我希望每当有人点击视频时就播放/停止。代码工作得几乎完美,问题是我调用 defInteractions 函数的类还包含 booked 和 comments su
当用户使用以下代码点击 UItableView 中的 UITextField 时,我正在尝试处理一些操作,但 tapDetected: 代码未被打电话。 UITableViewCell *cell =
我有一个包含许多旋转和移动柱的 View 。在列中,我添加了带有图像和标题的 UIView 命名元素。为了充分理解这张图片 我的问题对我来说很奇怪。我添加到元素点击手势 gestureTap = [[
代码如下: 这部分写在**-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPat
我为 self.view 和 UILabel(mainView 的 subview )添加了 tapGesture,每个执行不同的选择器。 但是调用了唯一的主视图 tapGesture 而没有调用标签
我创建了一个 Popup 类 以在我的应用程序中使用,我想在黑色图层不透明度中添加一个 UITapGestureRecognizer,当用户触摸弹出窗口之外时关闭自动地。但是这个手势没有被识别出来。我
我有一个 UIScrollView。我像这样对它做了一个点击手势: self.tapGesture = UITapGestureRecognizer(target: self, action: #se
我的 scrollView 的每一页的背景中都有一个视频,启用了分页。我希望视频在点击可以看到视频的区域时播放/暂停(见左下图,在包含名称和图像标签的 UIView 和底部标签栏之间)(视频 subv
我正在制作一个游戏广告,但我很难制作一个跳转按钮。我已经创建了跳上跳下的 SKaction 序列,它的工作原理非常完美。 func JumpArrow () { self.addChild(j
我正在以编程方式创建 UITextView(的子类),并希望在用户点击创建的 UITextView 时显示弹出 View 或其他内容。显示弹出 View 不是我的问题,但捕捉点击手势是: func c
我也在尝试使用 UITapGesture 将 UIImage 设为按钮。 let contactSegueIdentifier = "showContactSegue" override func v
我试图在 swift 中使用可扩展的 tableview。所以我在 tableview 的标题中添加了 Gesture,但它无法识别。请指导我。只需交叉检查我的编码。 我的编码如下: func tab
我有一个类,clickableImage。 clickableImage 有一个函数的回调变量。 当你分配回调函数时,我添加了一个手势识别器。 clickableImage 有一个函数“tapped”
当从特定单元格的 subview 中触发 UITapGesture 时,我正在尝试从该单元格检索数据。我当前的代码以一种我不知道它是如何计算的方式为每个单元格返回错误的单元格。有时它会因同一个单元而改
我们正在使用 UIPickerView允许用户从选项列表中进行选择。我们正在添加 UIPickerView作为容器 UIView 的 subview 。然后我们将一个 UITapGestureReco
我是一名优秀的程序员,十分优秀!