- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 UIView
的 isHidden
属性来显示/隐藏我正在开发的发布界面上的控件。我用它来更改键盘向上/向下、选择帖子类型等时可用的控件。我编写了一个由设置 View 属性(主要是 .isHidden
)和动画的通知触发的方法更改,当键盘出现时调用,或者当用户选择一个帖子类型,然后更改他们可用的控件时。这通常工作得很好,并且属性会按预期更改,但是当该方法由 UIBarButton
操作触发时,设置为可见的 View 变得无响应。点击栏按钮后,我无法更改 View 的 isHidden
属性(即使将 isHidden
显式设置为 true 或 false...它也不会改变)。
下面是改变 View 属性的方法:
@objc func animateActionViewChange(_ sender: Notification) {
// DEBUG
print("\n[BEFORE]\nnormalActionView.isHidden: \(normalActionView.isHidden)\nkeyboardActionView.isHidden: \(keyboardActionView.isHidden)\nkeyboardUp: \(keyboardUp)\nactionViewActive: \(actionViewActive)")
// save prev state
let normalTemp: Bool = normalActionView.isHidden
let keyboardTemp: Bool = keyboardActionView.isHidden
// set new state based on env vars
normalActionView.isHidden = keyboardUp ? true : !actionViewActive
keyboardActionView.isHidden = keyboardUp ? !actionViewActive : true
// DEBUG
print("[AFTER]\nnormalActionView.isHidden: \(normalActionView.isHidden)\nkeyboardActionView.isHidden: \(keyboardActionView.isHidden)\nkeyboardUp: \(keyboardUp)\nactionViewActive: \(actionViewActive)")
// animate opacity changes
if normalActionView.isHidden != normalTemp {
let targetAlpha: CGFloat = normalTemp ? CGFloat(1) : CGFloat(0)
UIView.animate(withDuration: actionViewAnimationDuration / 2) {
self.normalActionView.alpha = targetAlpha
}
}
if keyboardActionView.isHidden != keyboardTemp {
let targetAlpha: CGFloat = keyboardTemp ? CGFloat(1) : CGFloat(0)
UIView.animate(withDuration: actionViewAnimationDuration / 2) {
self.keyboardActionView.alpha = targetAlpha
}
}
}
以及 UIBarButton
调用的操作(此问题涉及按钮标题为“返回”时):
// back/cancel button action
@IBAction func cancel(sender: UIBarButtonItem) {
if sender.title == "Cancel" {
// cancel ongoing request if there is one
if let request = ongoingRequest {
if !request.isFinished {
request.cancel()
}
}
self.performSegue(withIdentifier: "cancel_unwindFromNewPostView", sender: self)
} else {
// reset post type to default (general)
postType = .general
// set actionViewActive bool to set visibility going forwards
actionViewActive = true
// hide datePicker
self.datePickerView.isHidden = true
actionViewAnimationDuration = 0.35
NotificationCenter.default.post(name: NSNotification.Name("animateActionViewChange"), object: nil)
UIView.animate(withDuration: 0.35) {
// layout
self.view.layoutIfNeeded()
}
// revert button text to 'cancel'
cancelButton.title = "Cancel"
}
}
这是点击“后退”按钮之前调试标志的输出:
[BEFORE]
normalActionView.isHidden: false
keyboardActionView.isHidden: true
keyboardUp: true
actionViewActive: true
[AFTER]
normalActionView.isHidden: true
keyboardActionView.isHidden: false
keyboardUp: true
actionViewActive: true
之后:
[BEFORE]
normalActionView.isHidden: true
keyboardActionView.isHidden: true
keyboardUp: false
actionViewActive: true
[AFTER]
normalActionView.isHidden: true
keyboardActionView.isHidden: true
keyboardUp: false
actionViewActive: true
正如您在上面看到的,普通操作 View 的 isHidden
属性没有改变,即使它被设置为“false”。我最初认为这是因为引用在某处丢失了(虽然我认为这会导致 nil 引用,但我没有),所以我引用了 normalActionView
和 keyboardActionView
强大。显然,这并没有解决问题,所以我将对 isHidden
的更改放在一个通知调用的方法中,以确保它始终在同一个线程上(确实如此,我通过打印当前线程来检查thread,它总是 main),但这也没有帮助。
最佳答案
isHidden
表现得好像是累积的。例如,如果连续两次将其设置为 true
,则需要将其设置为 false
两次。
我通常在设置值之前检查相反的值。
if view.isHidden == false {
view.isHidden = true
}
关于ios - UIBarButton 调用操作后无法更改 UIView.isHidden 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56830523/
我有一个 View A,通过RxSwift点击按钮让它显示或隐藏的方式:.bind(to:nearVc.view.rx.isHidden)现在我想监控 View A属性isHidden并做一些其他事情
我使用 navigationController?.hidesBarsOnTap = true 隐藏导航栏。我需要观察 isHidden 属性在触发时是否执行某些操作。 最佳答案 我认为你可以使用RX
我已经使用隐藏功能一段时间了,它在我的网站上运行良好; function isHidden(oDiv){ var vDiv = document.getElementById(oDiv);
我刚刚将代码从 Objective-C 转换为 swift,现在我的应用程序中发生了一些未知的崩溃。 应用程序会在使用 selectedView.isHidden = false 更改可见性的每个 s
更新 View 的 alpha 值后,是否有任何理由将 isHidden 设置为 false?例如 UIView.animate( withDuration: 1.0, animati
我的 Storyboard中有一个 iAd 横幅,并将一个 socket 拖到我的类(class)。我现在只是想做一个简单的实现(没有动画),但不明白为什么当我尝试设置 self.adBanner.i
我是 CAShapeLayers 的新手,如果这是一个明显的修复,请原谅我。我试图在 View 向上移动时与 UIScrollView 同步移动一条线,但在 ScrollView 向下移动时保持该线静
我正在尝试更新 UIStackView,以便在 UITextField 的值等于 “Other” 时显示一个字段。这是我的代码: @IBOutlet var stackView: UIStackVie
我正在构建一个 Cocoa 桌面应用程序。我想知道 NSView 的 isHidden 状态何时发生变化。到目前为止,使用目标/操作没有帮助,而且我在 NSNotification 中找不到任何用于此
我的游戏有两种横幅广告类型,顶部横幅和底部横幅,顶部仅在游戏场景中显示,底部仅在主菜单中显示它可以工作,除了在游戏过程中大约一分钟后由于某种原因,我的顶部横幅隐藏,底部显示此是我的代码 ` v
我目前正在设计一个使用标签栏 Controller 的应用程序。在消息选项卡(即时消息)上,我希望每当用户正在/查看他/她与另一个人的对话时选项卡栏就会消失。为此,我使用了以下代码:self.tabB
我正在摆弄 Java NIO,由于某种原因我无法让 Files.isHidden() 返回正确的 boolean 值。该程序只是检查目录是否隐藏,如果隐藏则使其可见,如果不隐藏则使其隐藏。这就是我所拥
我有一个 UIView EmptyCollectionView,它在我的 UICollectionView 为空时显示。我的工作方式是在 ViewController 的 viewDidLoad 中创
我有一个包含标签和其他一些元素的 UIView。在某些时候,我需要切换 UIView 的可见性,但我需要其他约束来保持整体结构,无需此 UIView。我正在使用 UIView 的高度约束来做到这一点
override func viewDidLoad() { super.viewDidLoad() button.isHidden = false } 我试图在
我想根据下面的逻辑语句在集合单元格中显示多个 UIView。 此功能适用于我的选项卡栏应用程序中的日历 View 。我正在从 Firebase Firestore 上的数据库读取事件并将其保存在 ca
我有一个 searchBar,当按下 searchButton 时,它会显示在 UINavigationBar 中。搜索完成或用户取消搜索后,我希望 title 返回到 UINavigationBar
我在 iOS11 中从下面的代码中得到了一个窗口: UIWindow *window = [UIApplication sharedApplication].windows.lastObject; 它
首先,我没有 Storyboard,一切都是程序化的。我有三个 TextFields,其中一个隐藏(isHidden = true)在登录按钮后面,登录按钮下方是注册按钮。如果您点击注册按钮,登录按钮
我正在使用 UIView 的 isHidden 属性来显示/隐藏我正在开发的发布界面上的控件。我用它来更改键盘向上/向下、选择帖子类型等时可用的控件。我编写了一个由设置 View 属性(主要是 .is
我是一名优秀的程序员,十分优秀!