【问题标题】:How to get Keyboard on double tap on a text field如何在文本字段上双击键盘
【发布时间】:2014-03-24 22:15:00
【问题描述】:

我正在制作一个应用程序,我希望在其中双击键盘,我通过使用文本字段委托方法禁用了单击键盘:

-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{
    return NO; 
}

然后我为文本字段创建一个操作方法

[textField1 addTarget:self action:@selector(clicked) forControlEvents:UIControlEventTouchDownRepeat];

在这个方法中我使用了这段代码:

[textField1 becomeFirstResponder];

但这不起作用

建议我,我该怎么办?

【问题讨论】:

    标签: ios iphone ios5 ios4 ios7


    【解决方案1】:

    首先创建一个 Bool 类型的类变量(比如BOOL shouldFire)并将其初始化为 NO。 并将UITapGestureRecognisernumber of taps = 2 添加到UITextField。

    当附加到 TapGesture 的选择器触发时,使用下面的代码

    -(void)tapped:(UITapGestureRecogniser *)ges{
     _shouldFire=YES;
     [textField1 becomeFirstResponder];
    }
    

    然后将您的方法更改为->

    -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
    {   
        if(self.shouldFire==YES){
          self.shouldFire=NO;
          return YES: 
        }
        return NO;
    }
    

    【讨论】:

    • 感谢代码,但我仍然面临同样的问题。
    • 你是如何使用我的代码的?你创建了 shouldFire Bool 还是 int ?给我看看你的代码。
    【解决方案2】:

    直接的建议是添加一个静态变量

    -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
    {
        static int count = 0;
        count++;
        if(count%2 ==0)
            return YES;
        else 
            return NO;
    }
    

    【讨论】:

    • 如果用户也分别点击两次,您的代码将使其成为响应者。这是不需要的。
    • 然后您可以将其计为 IVAR 并设置一个计时器,如果 x 时间内没有 2 次点击,则将其再次设为 0。除了我的回答之外,我的意思是。
    • 如果用户也分别点击两次,您的代码将使其成为响应者。这是不需要的。
    • 阅读我的评论 -> 如果你不明白 -> 然后我解释你只是手动执行它,你定义了用户点击的时间窗口。
    猜你喜欢
    • 1970-01-01
    • 2021-03-24
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多