- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的代码。
我通过在 xib 中定义 View 来注册按钮操作。
btn 已连接到dismissButtonClick,但是当我单击该按钮时它不起作用。
所以我尝试了一种方法来覆盖 touchesBegan Func 并且它没有工作。
我的第三次尝试是手势注册。
它也没有工作......
我已经没有办法了。
请帮帮我。
@objc public class CustomView : UIView {
static let xibName = "xibName"
@IBOutlet weak var mainView: UIView!
@IBOutlet weak var viewTopAnchor: NSLayoutConstraint?
@IBOutlet weak var btn: UIButton?
var completion: (() -> Void)?
var parentView : UIViewController!
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
public static func getInstance(_ vc : UIViewController, _ completion : (() -> Void)? ) -> UIView {
let view = Bundle.main.loadNibNamed(CustomView.xibName, owner: self, options: nil)?.first as! CustomView
view.parentView = vc
view.completion = completion
view.initUI()
return view
}
func initUI() {
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action:#selector(CustomView.dismiss))
mainView.addGestureRecognizer(tapGestureRecognizer)
btn?.addTarget(self, action: #selector(CustomView.dismiss), for: .touchUpInside)
parentView.view.addSubview(self)
self.translatesAutoresizingMaskIntoConstraints = false
self.leadingAnchor.constraint(equalTo: parentView.view.leadingAnchor, constant: 0).isActive = true
self.trailingAnchor.constraint(equalTo: parentView.view.trailingAnchor, constant: 0).isActive = true
viewTopAnchor?.constant = -150
viewTopAnchor?.isActive = true
setNeedsDisplay()
layoutIfNeeded()
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5 ) {
self.mainView.isHidden = false
self.showAnimation()
}
}
//top down anim
private func showAnimation(){
DispatchQueue.main.asyncAfter(deadline: .now() ) {
self.viewTopAnchor?.constant = 0
UIView.animate(withDuration: 0.5) {
self.layoutIfNeeded()
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self.dismissAnimation(self.duration)
}
}
}
}
private func dismissAnimation(_ duration : Double){
DispatchQueue.main.asyncAfter(deadline: .now() + duration - 0.5) {
self.viewTopAnchor?.constant = -150
UIView.animate(withDuration: 1) {
self.layoutIfNeeded()
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self.completion?()
self.removeFromSuperview()
}
}
}
}
public override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touchBegan") // not called
let touch = touches.first
}
public override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
print("touchBegan") // not called
self.completion?()
self.btn?.removeTarget(self, action: #selector(dismissButtonClick), for: .touchUpInside)
self.removeFromSuperview()
}
@objc
func dismiss(){
print("dismiss") // not called
self.completion?()
self.removeFromSuperview()
}
@IBAction func dismissButtonClick(_ sender: Any) {
print("dismissButtonClick") // not called
self.completion?()
self.removeFromSuperview()
}
}
CustomView.getInstance(view, completion)
最佳答案
I have created one custom view with one button and wrote method which is called on button click. Please check it out it might be helpful in your case.
https://github.com/bhoomik/Custom_View_Demo
Custom View Code
//
// CustomView.swift
// Temp
//
// Created by Jaimin Modi on 19/02/20.
// Copyright © 2020 Jaimin Modi. All rights reserved.
//
import UIKit
//
// CustomView.swift
// Temp
//
//
import UIKit
class CustomView: UIView {
static let xibName = "CustomView"
@IBOutlet weak var viewTopAnchor: NSLayoutConstraint?
@IBOutlet weak var btn: UIButton?
var completion: (() -> Void)?
var parentView : UIViewController!
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
public static func getInstance(_ vc : UIViewController, _ completion : (() -> Void)? ) -> UIView {
let view = Bundle.main.loadNibNamed(CustomView.xibName, owner: self, options: nil)?.first as! CustomView
view.parentView = vc
view.completion = completion
// view.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 120)
view.initUI()
return view
}
func initUI() {
// let tapGestureRecognizer = UITapGestureRecognizer(target: self, action:#selector(CustomView.dismiss))
// mainView.addGestureRecognizer(tapGestureRecognizer)
//btn?.addTarget(self, action: #selector(CustomView.dismiss), for: .touchUpInside)
parentView.view.addSubview(self)
self.translatesAutoresizingMaskIntoConstraints = false
// self.leadingAnchor.constraint(equalTo: parentView.view.leadingAnchor, constant: 0).isActive = true
// self.trailingAnchor.constraint(equalTo: parentView.view.trailingAnchor, constant: 0).isActive = true
// viewTopAnchor?.constant = -150
// viewTopAnchor?.constant = 300
// viewTopAnchor?.isActive = true
let guide = self.parentView.view.safeAreaLayoutGuide
NSLayoutConstraint.activate(
[self.leftAnchor.constraint(equalTo: self.parentView.view.leftAnchor),
self.heightAnchor.constraint(equalToConstant: 50),
self.rightAnchor.constraint(equalTo: self.parentView.view.rightAnchor),
// segmentedControl!.topAnchor.constraint(equalTo: view.topAnchor, constant: 80)]
self.topAnchor.constraint(equalTo: guide.topAnchor, constant: 0)]
)
setNeedsDisplay()
layoutIfNeeded()
/* DispatchQueue.main.asyncAfter(deadline: .now() + 0.5 ) {
self.mainView.isHidden = false
self.showAnimation()
}*/
}
@IBAction func dismissButtonClick(_ sender: Any) {
print("dismissButtonClick") // not called
// self.completion?()
// self.removeFromSuperview()
}
/*
// Only override draw() if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func draw(_ rect: CGRect) {
// Drawing code
}
*/
}
UIView Controller code
:
import UIKit
extension UIView {
class func fromNib<T: UIView>() -> T {
return Bundle(for: T.self).loadNibNamed(String(describing: T.self), owner: nil, options: nil)![0] as! T
}
}
class ViewController: UIViewController {
@IBOutlet weak var viewNav : CustomView!
var completion: (() -> Void)?
override func viewDidLoad() {
super.viewDidLoad()
/*viewNav = UIView.fromNib()
viewNav.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: viewNav.frame.size.height)
self.view.addSubview(viewNav)*/
CustomView.getInstance(self, completion)
// Do any additional setup after loading the view.
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
[1]: https://github.com/bhoomik/Custom_View_Demo
关于ios - 自定义 View 按钮单击它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60294600/
我在选项卡中有我的网络应用程序的选项。 aaa bbb ccc ddd eee 当用户单击任何选项卡(在同一窗口中)时,我会使用此代码获得淡出效果,然后自动
如何获得一个简单的调用单击来实现如下功能:http://jsfiddle.net/ftwPS/6/我显然错过了一些基本的东西,因为当您单击“CLICK”时这不起作用。 $('tr').click(fu
我有一个列表,在左侧显示一个插入符号图标,单击它时应该更改图标。每当我单击一个图标时,所有图标都会更改。 detailedInfo = []; subordinateInfo; openSu
我有一个 div,我想对其进行设置,以便当我单击其他内容时,它会隐藏该 div。 我也是这样 $('body').click(function(){ if(loginOpened) {
我有很多装有不同内容的盒子。 如果单击第一个框,您可以看到一个包含更多详细信息的弹出框。如果单击第二个、第三个等框,您必须查看这些框的详细信息。 我的问题:如果我点击框号。 2 我看到了盒子号的详细信
当我点击 .add-btn 时,我将 .add-btn 的样式更改为 background:#cccccc 并将 val() 更改为“-”。 现在当我用 tr td .list 删除添加的文本时,它是
感谢 SO 的出色贡献者!当您开始了解 jQuery 时,它会变得更酷。 :) 所以我有一个 LI,单击时会显示/隐藏子 UL。我想做的是能够单击 LI 内的链接,打开一个空白窗口,但也不会关闭子 U
我有这份文档,它使我能够获得一份带有点击进度的多项选择选择调查问卷。 如何用图像代替此处的文字? (并且仍然有这样的机制,一旦单击[图像],就会提出下一个问题) 我已经尝试使用 UL/H1 设置背景图
我想在 JQGrid 的刷新按钮单击上编写代码。有什么事件吗? 最佳答案 如果您需要在开始刷新之前执行一些操作,您应该使用 beforeRefresh打回来: $("#grid_id").jqGrid
问题是将对象或多个参数从模板传递到组件,并使用它们将数据添加到 API。 任务.service.ts addTasks(task: Task): Observable{ let headers =
我有一个像这样的primefaces选项卡 View : This tab has static content. this t
我在 jquery 中有一个有效的 a.click() 函数...但是如果我单击一个 anchor ,我会打开一个新窗口...但是我怎样才能阻止浏览器本身打开一个新窗口? 示例: $('a')
有没有简单的方法来创建代码:如果 URL 更改或单击链接显示 div(例如加载 gif 3 秒),则显示页面?有点像空白的白色页面,加载 gif 旋转 3 秒然后显示页面? 谢谢! 最佳答案 给定 G
我需要知道此时按钮的状态是否被点击? 谢谢 最佳答案 if (myButton.state & UIControlStateHighlighted) { // Do your stuff the
我正在 NSImageView 上绘制一条 NSBezierPath 线。我正在创建 NSBezierPath 对象,设置 moveToPoint,设置 lineToPoint,设置 setLineW
我的 Selenium 代码存在问题,无法正确执行按键 + 单击操作。 测试应打开 jqueryui.com 链接并选择页面上的前 2 个 li 元素。 我正在使用 Selenium 2.23 和 F
单击时我将更改字符串一部分的样式。例如“TEXT”,然后单击“T”,之后它会将样式从黑色更改为红色,仅 T在我的代码中,当我单击文本时,我拆分文本并保留在“split”数组中,它将调用handleCl
我在网站上有一个 anchor 。当有人点击它时,我在 jquery 中执行一些操作并更改名称,但是当再次单击它时,事件被触发,尽管我已经更改了它的名称。代码在这里: $(".like_cont a[
我有一个下载链接Download我希望每次当有人点击“下载”时,我都可以将其插入数据库total_downloads+1。为了插入数据库,我通常使用 然后 if (isset($_POST['d
我是一名优秀的程序员,十分优秀!