按钮计算停止工作

时间:2013-06-07 17:41:03

标签: ios objective-c

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

//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];
}

感谢您的帮助。

1 个答案:

答案 0 :(得分: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. 如果您稍后在视图中添加第二个手势识别器,则需要在第二个方法中添加一个检查,以区别对待第二个识别器。