0

我有一个简单的程序,可以在按下按钮时进行计算。使用以下代码将结果放入标签中:

//converts the float to 2 descimal places then converts it to a string
NSString *stringRectResult=[[NSString alloc]
                            initWithFormat:@"%1.2f",floatCalcResult];

//displays the string result in the label
resultLabel.text=stringRectResult;

它工作得很好,但是,我在代码中添加了当用户触摸键盘时隐藏十进制键盘。那行得通,但是当我添加此代码时,更新标签的按钮不再起作用。任何人都可以帮忙吗?隐藏键盘的代码如下。该应用程序在我将其注释掉时有效,但在它处于活动状态时无效

viewDidLoad

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(tap:)];
[self.view addGestureRecognizer:tapRecognizer];

点击选择器...

-(void)tap:(UIGestureRecognizer *)gr
{
    [self.view endEditing:YES];
}

感谢您的任何帮助。

4

1 回答 1

0

问题是通过拦截所有用户的点击(为了隐藏键盘),您正在阻止任何其他用户界面元素被点击。我会敦促你重新考虑你的设计;通常不需要有明确的工具来隐藏键盘。

如果你确实想保留这个设计,你可以gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:在你的类中实现这个方法:

- (void) viewDidLoad
{
    // ...

    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
        initWithTarget:self action:@selector(tap:)];
    tapRecognizer.delegate = self;
    [self.view addGestureRecognizer:tapRecognizer];
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

要记住两件事:

  1. 您需要将视图控制器标记为符合UIGestureRecognizerDelegate协议。

  2. 如果您稍后将第二个手势识别器添加到视图中,则需要在第二个方法中添加一个检查以区别对待第二个识别器。

于 2013-06-07T17:56:22.043 回答