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

次の 2 つの点に注意してください。

  1. UIGestureRecognizerDelegateView Controller をプロトコルに準拠しているとマークする必要があります。

  2. 後で 2 番目のジェスチャ レコグナイザーをビューに追加する場合は、2 番目のメソッド内にチェックを追加して、2 番目のレコグナイザーを別の方法で処理する必要があります。

于 2013-06-07T17:56:22.043 に答える