小编has*_*svn的帖子

获取iOS当前语言(包括国家/地区代码)

我需要得到一个字符串像en_USes_ESiOS中.

显而易见的方法是使用[NSLocale currentLocale]并从那里获取语言信息.但是,这会为您提供"区域格式"而不是实际的设备语言,这意味着如果您使用英语设备语言但区域格式为"西班牙",则会错误地报告es_ES.

如果您需要设备语言,则必须执行以下操作: [[NSLocale preferredLanguages] objectAtIndex:0]

但是,这只会为您提供语言,因此您可以获得类似enes最终没有国家/地区代码的内容.

我如何正确获取国家代码,就像Safari一样?

country-codes ios

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

使用NSTextView伪造NSTextField以获得漂亮的颜色?

尝试更改NSTextField的选定文本背景颜色(我们有一个黑暗的UI,选定的文本背景几乎与文本本身相同),但只有NSTextView似乎允许我们更改它.

因此我们尝试使用NSTextView伪造NSTextField,但无法使文本滚动工作相同.

我们得到的最接近的是这段代码:

NSTextView *tf = [ [ NSTextView alloc ] initWithFrame: NSMakeRect( 30.0, 20.0, 80.0, 22.0 ) ];

// Dark UI
[tf setTextColor:[NSColor whiteColor]];
[tf setBackgroundColor:[NSColor darkGrayColor]];

// Fixed size
[tf setVerticallyResizable:FALSE];
[tf setHorizontallyResizable:FALSE];

[tf setAlignment:NSRightTextAlignment]; // Make it right-aligned (yup, we need this too)

[[tf textContainer] setContainerSize:NSMakeSize(2000, 20)]; // Try to Avoid line wrapping with this ugly hack
[tf setFieldEditor:TRUE]; // Make Return key accept the textfield

// Set text properties
NSMutableDictionary *dict = [[[tf selectedTextAttributes] mutableCopy ] …
Run Code Online (Sandbox Code Playgroud)

macos cocoa objective-c nstextfield nstextview

9
推荐指数
1
解决办法
3433
查看次数

这是正确的C++ 0x代码吗?

在GCC 4.6中尝试了它并编译和链接,但在MacOS上运行时发出"总线错误"消息.VS2010甚至没有编译它.

但问题是,这应该在标准C++ 0x中实际工作吗?

#include <cstdio>
int (*main)()=[]()->int{printf("HEY!\n");return 0;};
Run Code Online (Sandbox Code Playgroud)

是的,它试图将"main"定义为lambda函数.

c++ lambda c++11

9
推荐指数
1
解决办法
315
查看次数

按Tab键时NSTextField没有注意到失去焦点?

当按下Tab键使NSTextField失去焦点时,我似乎找不到通知的方法.单击另一个控件或按Enter键时,我得到一个很好的textDidEndEditing,但是如果我通过按Tab键更改焦点则不会.

还试图为此目的猛拉KeyDowndoCommandBySelector,但我无处可去.

有任何想法吗?

提前致谢

编辑:

忘了提,但我也试过resignFirstResponder.这是我试过的代码:

- (BOOL)resignFirstResponder
{
    NSRunAlertPanel(@"", @"Lost Focus",@"OK", nil, nil);
    return [super resignFirstResponder];
}
- (BOOL)becomeFirstResponder
{
    NSRunAlertPanel(@"", @"Got focus",@"OK", nil, nil);
    return [super becomeFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,这里发生的事情是,当获得焦点时,一个接一个地调用becomeFirstResponder和resignFirstResponder.但是当将焦点从控制转移时,两者都没有.

cocoa focus nstextfield

3
推荐指数
1
解决办法
7223
查看次数

C++:抛出派生的shared_ptr并捕获base的base_ptr?

好吧,我被告知这个问题:为什么你可以抛出指向派生类的指针并捕获指向其基础的指针......但你不能用shared_ptrs做到这一点?

例如,这有效:

class Base {};
class Derived : public Base {};
int main()
{   
    try 
    {   
        throw new Derived() ;
    }   
    catch( const Base2 * b ) 
    {   
        printf("Received a base" ) ; 
    }   

    return 0 ;
}
Run Code Online (Sandbox Code Playgroud)

但事实并非如此

int main()
{
    try
    {
        throw std::tr1::shared_ptr<Derived>( new Derived() ) ;
    }
    catch( const std::tr1::shared_ptr<Base> & b ) 
    {
        printf("Received a base" ) ;
    }
    return 0 ;
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c++ exception shared-ptr

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