小编Sur*_*gch的帖子

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

我有一个子类视图,当它在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万
查看次数

如何保存iPhone应用程序的用户首选项?

问题标题几乎让它消失了 - 我希望我的应用程序记住一些事情.它是某种计算器,因此它应该保存最后使用的值和一些用户可选择的设置.

基本上我想保存一些浮动和BOOL并在下次加载应用程序时再次加载它们.

什么是最好最简单的方法?

谢谢!!

iphone objective-c ios

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

尝试将第3个选项卡添加到tabBarController

我正在尝试使用ios5向tabBarController添加第3个选项卡.将其拖出到故事板时获得的标准对象有2个选项卡.有谁知道如何做到这一点?我搜索了互联网,所有的例子都从他们的tabBarController开始,带有额外的标签而没有显示如何获得它.

tabbarcontroller ios

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

如何在Swift中为iOS创建垂直文本UILabel和UITextView?

如果你根据标题来讨论这个问题,但对蒙古语不感兴趣,你可能会寻找这个问答:


我一直在学习Swift,以便为传统的蒙古语开发iOS应用程序.问题是传统的蒙古语是从上到下,从左到右垂直书写的.我的问题是如何垂直显示文本并仍然有换行功能?

如果你和我待在一起,我会试着更清楚地解释这个问题.下面是我想要实现的文本视图的图像.如果外国脚本将你抛弃,我已经包含了遵循相同模式的英文文本.事实上,如果应用程序有任何英文文本要显示,这应该是它的外观.

在此输入图像描述

对于简单的单线UILabel,顺时针旋转90度就可以了.但是,对于多行UITextView,我需要处理换行.如果我只做一个普通的90度旋转,写的第一件事最终会在最后一行.

到目前为止,我已经制定了一个我认为可以解决这个问题的计划:

  1. 制作一个自定义字体,其中所有字母都垂直镜像.
  2. 顺时针旋转文本视图90度.
  3. 水平镜像文本视图.

在此输入图像描述

这应该照顾文本包装.

我可以做镜像字体.但是,我不知道如何为UITextView的旋转和镜像执行Swift编码.我发现以下链接似乎给解决方案的部分提示,但它们都在Objective C中,而不是在Swift中.

应用程序商店中有传统的蒙古应用程序(像这样这个),但我还没有找到任何人共享他们的源代码,所以我不知道他们在幕后做什么来显示文本.我打算让我的代码开源,以便将来的其他人不会为数百万阅读传统蒙古语的人开发应用程序.你可以给予这项努力的任何帮助,不仅是我,也是蒙古人民.即使你不了解自己,提出这个问题以使其更加明显也会有所帮助.

更新

@ sangonz的答案仍然是一个很好的答案,但我暂时将其标记为已接受的答案,因为我无法让一切顺利.特别:

  • 启用滚动(通过在滚动视图中嵌入自定义视图或通过子类化UIScrollView).在github项目中,@ sangonz说这应该很容易,但它不适合我.
  • 在方向改变时获得字线的重新布局(而不是拉伸).我认为通过更多的研究来解决这个问题应该不会太难.
  • 为什么文本行不会一直到视图的边缘?底部存在很大差距.
  • 如何取消链接自定义垂直视图的NSTextStorage与其他UITextView.(见这个问题)

到目前为止,我一直在使用上面提到的原始方法,但我真正想要的是获得类似@sangonz提议的工作方式.

我现在也在考虑其他方法

uitextview uilabel ios swift mongolian-vertical-script

46
推荐指数
1
解决办法
6142
查看次数

如何在Android中创建弹出窗口(PopupWindow)

要创建一个简单的工作PopupWindow,我们需要执行以下操作:

popup_example.xml:

<?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:padding="10dip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">

        <TextView         
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dip"
            android:text="Test Pop-Up" />

    </LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Java代码

LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

PopupWindow pw = new PopupWindow(inflater.inflate(R.layout.popup_example, null, false),100,100, true);

pw.showAtLocation(this.findViewById(R.id.main), Gravity.CENTER, 0, 0);
Run Code Online (Sandbox Code Playgroud)

我的要求是我需要一个

<TEXTVIEW android:layout_height="wrap_content" android:layout_width="fill_parent" />
Run Code Online (Sandbox Code Playgroud)

和a

<BUTTON android:id="@+id/end_data_send_button" android:text="Cancel"/>
Run Code Online (Sandbox Code Playgroud)

在我的popup_example.xml.如何在Java代码中处理这两个组件?

截图

android popupwindow android-popupwindow

45
推荐指数
5
解决办法
17万
查看次数

检查标志位java

我有标志位的问题.我有一个int变量来保存标志.首先,我为该变量设置了一些标志.后来我需要检查该变量中设置了多少个标志.但我不知道这样做.

java flags bit-manipulation

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

如何检测声音文件何时完成?

我在广播接收器活动中使用此代码播放声音文件:

notification.sound = Uri.parse("android.resource://emad.app/raw/seven_chimes");
Run Code Online (Sandbox Code Playgroud)

我想检测这个文件何时播放完毕.

我尝试了这样的循环,但我认为这对媒体播放器只有好处,因为即使我确定声音文件仍在播放,它总是=假:

/*
 * Stay here until the chime sound is finished.
 */
   while (manager.isMusicActive()){
   }
Run Code Online (Sandbox Code Playgroud)

你能告诉我应该用什么代替manager.isMusicActive()吗?

android while-loop

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

更改ViewPager以启用无限页面滚动

Jon Willis发布了如何使用他的代码实现无限滚动.在那里,他说他在Android支持库的ViewPager类中进行了一些更改.已经进行了哪些更改以及如何使用ViewPager更改"重新编译"库?

android infinite-scroll android-viewpager

45
推荐指数
5
解决办法
10万
查看次数

Android - 使用postDelayed()调用定期运行方法

我有一个Android应用程序的情况,我想开始一个应该每秒运行的网络活动(发送一些数据).我实现如下:

onCreate()我有代码:

tv = new TextView(this);
tv.postDelayed(sendData, 1000);
Run Code Online (Sandbox Code Playgroud)

sendData()函数:

   Handler handler = new Handler();
   private Runnable sendData=new Runnable(){
    public void run(){
        try {
            //prepare and send the data here..
            handler.removeCallbacks(sendData);
            handler.postDelayed(sendData, 1000);    
        }
        catch (Exception e) {
            e.printStackTrace();
        }   
    }
};
Run Code Online (Sandbox Code Playgroud)

问题是这样的:当用户按下后退按钮并且应用程序出现(UI消失)时,该sendData()功能仍然会被执行,这就是我想要的.现在,当用户重新启动应用程序时,我onCreate()再次被sendData()调用,并且每秒调用两次.它继续这样下去.每当用户出来并重新开始时,sendData()每秒钟就会发生一次.

我究竟做错了什么?这是我的new Handler()创造问题吗?处理这个问题的最佳方法是什么?sendData()在用户退出应用程序(表单应用程序管理器)之前,我希望每秒调用一次.

android postdelayed

45
推荐指数
4
解决办法
15万
查看次数

从Xcode项目中删除单元测试?

当我在Xcode 5中创建我的iOS项目时,我单击了选项以向项目添加测试.是否有可能删除所有测试内容,就像我没有点击选项开始一样?

xcode unit-testing ios

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