小编ric*_*h.e的帖子

如何在视图中捕获软键盘输入?

我有一个子类视图,当它在onTouchEvent中收到"修饰"时弹出键盘.它通过请求焦点,检索InputMethodManager,然后调用showSoftInput来显示此信息.

现在我需要弄清楚如何在按下它们时捕获软键盘的敲击字母.我目前只在软键盘上按下"下一个/完成"按钮时得到响应.

这是我的班级:

public class BigGrid extends View {

    private static final String TAG = "BigGrid";

    public BigGrid(Context context) {
        super(context);
        setFocusableInTouchMode(true); // allows the keyboard to pop up on
                                       // touch down

        setOnKeyListener(new OnKeyListener() {
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                Log.d(TAG, "onKeyListener");
                if (event.getAction() == KeyEvent.ACTION_DOWN) {
                    // Perform action on key press
                    Log.d(TAG, "ACTION_DOWN");
                    return true;
                }
                return false;
            }
        });
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        super.onTouchEvent(event);
        Log.d(TAG, "onTOUCH");
        if …
Run Code Online (Sandbox Code Playgroud)

android

48
推荐指数
3
解决办法
4万
查看次数

暂停没有断点的gdb

当我在Xcode中调试程序时,我可以在调试器控制台中暂停执行.有没有办法在命令行中使用gdb?

我想这样做,所以我可以在程序启动后修改断点.

c gdb

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

在xcode 4中禁用滑动手势

有谁知道如何禁用Xcode 4中的滑动手势,导致您跳转到新文件?我发现更多次,这个手势导致我切换到无意中远离我正在扫描的文件(我想在上下滚动之前我很懒,所以我的手指也会水平移动).

macos xcode xcode4

18
推荐指数
2
解决办法
2221
查看次数

target_compile_options()仅用于C++文件?

是否可以target_compile_options()仅用于C++文件?我想将它用作目标,该目标用作其他应用程序的依赖项,以便库可以将其编译器标志传播到这些应用程序.但是,如果某些标志-std=c++14与C或ObjC文件一起使用,则会导致构建失败.

我已经读过,我应该CXX_FLAGS只将这些标志添加到C++文件中,但这不会(自动)通过cmake的包系统传播.

c++ cmake

14
推荐指数
1
解决办法
7131
查看次数

值可变的lambda捕获不适用于const&?

考虑以下:

void test( const int &value )
{
    auto testConstRefMutableCopy = [value] () mutable {
        value = 2; // compile error: Cannot assign to a variable captured by copy in a non-mutable lambda
    };

    int valueCopy = value;
    auto testCopyMutableCopy = [valueCopy] () mutable {
        valueCopy = 2; // compiles OK
    };
}
Run Code Online (Sandbox Code Playgroud)

当我将lambda声明为可变并按value值捕获时(为什么我认为它是副本),为什么第一个版本是编译错误?

使用clang(x86_64-apple-darwin14.3.0)进行测试,这是错误消息的来源,以及Visual C++(vc120).

c++ lambda c++11

13
推荐指数
2
解决办法
3933
查看次数

UIInterfaceOrientationMaskPortrait和UIInterfaceOrientationPortrait有什么区别

我看过文档,但无法找到为什么有时会插入掩码这个词,有时候不会.

objective-c ios xcode4

8
推荐指数
1
解决办法
5691
查看次数

使用 lldb 打印带有换行符的字符串

我想使用 lldb 打印一个字符串,或者const char*std::string,以便人类可读。最重要的是,\ns 将作为换行符打印。有谁知道如何做到这一点?我尝试了这篇文章中为 gdb 提供的建议,但它似乎不适用于 lldb。

编辑:我知道您可以发出print myString命令来打印字符串,但是它不会格式化换行符(至少默认情况下不会):

c++ lldb

8
推荐指数
1
解决办法
6770
查看次数

资产 - "图像","声音"和"webkit"?

我试图以递归方式加载我放置在项目中"assets"文件夹中的所有资产.当我执行以下操作时:

AssetManager assetManager = getResources().getAssets();
String assets[] = assetManager.list("");
Run Code Online (Sandbox Code Playgroud)

并检查哪些字符串被加载到资产数组中,我找到了我放在指定文件夹中的资产,以及字符串"images","sounds"和"webkit".有人知道为什么吗?

有关背景信息(尚不知道它是否适用),我的资产是包含完整html网页的zip文件,我用它来加载到WebViews中.

android

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

NSURLProtocol的抽象方法

我一直在我的应用程序中使用自定义NSURLProtocol来检测资源并从缓存目录加载(如果可用),或重定向回我的应用程序的服务器.但是,我发现缺少抽象方法的文档,我不知道如何处理我们需要实现的一些抽象方法.

我们必须实施:

+ (BOOL)canInitWithRequest:(NSURLRequest *)request
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request
- (void)startLoading
- (void)stopLoading
Run Code Online (Sandbox Code Playgroud)

canInitWithRequest 这很简单,这就是你告诉NSURLProtocol你将如何回应这个请求.

我不知道该怎么做canonicalRequestForRequest:.

startLoading:,我要么从本地文件创建响应,要么同步获取远程文件,然后调用client方法:

[self.client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageAllowed];
[self.client URLProtocol:self didLoadData:responseData];
[self.client URLProtocolDidFinishLoading:self];
Run Code Online (Sandbox Code Playgroud)

我不清楚是否需要调用客户端协议方法:

 - (void)URLProtocol:(NSURLProtocol *)protocol wasRedirectedToRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse
Run Code Online (Sandbox Code Playgroud)

当我决定从远程服务器获取资源时(当它尚未缓存时).

最后,我还没弄清楚该怎么做 stopLoading:

如果有人知道这些方法的更多内容,那么您的见解将非常受欢迎.

url cocoa-touch ios

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

在Xcode 4.4中使用libc ++调试问题

当我尝试在c ++上进行列表迭代调试时遇到问题.

我做了一个简单的测试应用:

int main(int argc, const char * argv[])
{
// insert code here...
std::cout << "Hello, World!\n";

std::list<int> list;
list.push_back(1);
list.push_back(2);
--> list.push_back(3);    //Line before step over
    for (std::list<int>::const_iterator i = list.begin(); i != list.end(); i++)
    {
      std::cout << *i << std::endl;
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在调试时,当我在标有箭头的行上时,当我跳过时,它开始踩踏来自c ++文件的代码:'list'.我必须跨越15次,直到它最终到达for语句中的代码.

此问题仅发生在Xcode 4.4中.在Xcode 4.3中,调试工作得很好.

这里有一些不同的场景,结果不同:

  1. 使用LLVM GCC 4.2作为编译器→它工作正常.
  2. 使用Apple LLVM编译器4.0并为C++标准库设置libstdc ++(GNU C++标准库)→它可以正常工作.
  3. Apple LLVM编译器4.0并为C++标准库设置libc ++(支持C++ 11的LLVM C++标准库)→问题出现了.

在我正在开发的项目中,我们正在使用Apple LLVM编译器4.0和libc ++(支持C++ 11的LLVM C++标准库),所以我需要为场景3解决这个问题.

有谁知道会发生什么,以及是否有解决方法?

c++ debugging lldb libc++ xcode4.4

6
推荐指数
1
解决办法
928
查看次数

标签 统计

c++ ×4

android ×2

ios ×2

lldb ×2

xcode4 ×2

c ×1

c++11 ×1

cmake ×1

cocoa-touch ×1

debugging ×1

gdb ×1

lambda ×1

libc++ ×1

macos ×1

objective-c ×1

url ×1

xcode ×1

xcode4.4 ×1