小编Seb*_*che的帖子

如何将原始值7强制为UIViewAnimationCurve枚举?

UIKeyboardAnimationCurveUserInfoKeya的userInfo字典中的键UIKeyboardWillShowNotification包含Int7.

现在我需要将其传递IntUIView.setAnimationCurve(<here>).我尝试像这样创建所需的UIViewAnimationCurve枚举UIViewAnimationCurve(rawValue: 7).由于原始值7未记录,因此结果始终如此nil.

它在Objective-C中以这种方式运行良好.知道如何使用Swift将这个动画曲线从通知转换为UIView动画吗?


更新:正如Martin所指出的那样,自Xcode 6.3以来,这不再是一个问题.

来自Xcode 6.3发行说明:

现在可以使用init(rawValue :)初始化程序从原始整数值转换导入的具有未记录值的NS_ENUM类型(例如UIViewAnimationCurve),而不会将其重置为nil.可以编写使用unsafeBitCast作为此问题的变通方法的代码来使用原始值初始值设定项.

enums uiviewanimation uiviewanimation-curve swift

10
推荐指数
1
解决办法
2377
查看次数

在iOS 10中使用新键盘单击声音的官方方式

我的应用程序包含一个自定义控件,可以复制iOS标准键盘的行为.

我可以使用以下代码成功播放系统键盘单击声音:

UIDevice.current.playInputClick()
Run Code Online (Sandbox Code Playgroud)

在iOS 9及以下版本中,只有一个咔嗒声,这就是我所需要的.在iOS 10上,常规按键,退格键和其他特殊按键有不同的咔嗒声.

播放这些额外声音的官方方式是什么?我是否必须使用链接答案中的替代方法?该文档playInputClick()没有提及任何内容.

有一个答案建议使用播放新的点击声音AudioServicesPlaySystemSound.但另一个答案是,这些ID可能不会指向未来版本的iOS中的最新系统点击声音.解决方法的另一个问题是,似乎无法检查用户是否在系统设置(链接)中启用了键盘点击.

audio ios iphone-keypad swift ios10

10
推荐指数
1
解决办法
2384
查看次数

为什么在此代码中忽略析构函数?

以下代码演示了Turbo C++ Explorer项目中的一个奇怪问题.超出范围后,D :: D()中的三个堆栈对象之一不会被销毁.

只有在发布模式下编译时才会发生这种情况,auto_ptrs a_和b_属于不同类型,抛出的异常不会从std :: exception继承.它似乎在VC++ 2005和C++ Builder 2009中工作正常.我确实安装了BDS2006 Update 2,修补程序汇总和修补程序12.

是我的代码还是编译器?你知道修复吗?无法在VCL项目中可靠地使用auto_ptr会非常不方便.


#include <memory>
#include <stdexcept>
#include <iostream>

typedef std::exception my_error; // will work fine if replaced with line below
//class my_error : public std::exception {};

class A {};
class B {};

class C
{
public:
    C(int id) : id_(id) { std::cout << "C::C() " << id_ << std::endl; };
    ~C() { std::cout << "C::~C() " << id_ << std::endl; };
private:
    int id_;
};

class D …
Run Code Online (Sandbox Code Playgroud)

c++ destructor c++builder

7
推荐指数
1
解决办法
2106
查看次数