2

アプリには、UILongPressGestureRecognizer を使用して 2 つの選択肢を持つメニューを表示する 2 つの場所があります。Left と Right の 2 つの場所は、数字を表示する UILabels です。番号を長押しすると、「0 にリセット」または「キャンセル」のオプションを含むメニューがポップアップ表示されます。

問題なくメニューがポップアップします。しかし、メニューが表示された後に問題が発生しました。RIGHT-SIDE メニュー項目の表示がほぼ半分にカットオフされています。問題を説明するのに役立つ画像を含めました (画像の一部は意図的にピクセル化されています)。メニュー項目は機能し、正しいメソッドを呼び出しますが、正しく表示されません。-(BOOL)canBecomeFirstResponder {return YES;}クラスの後半に電話があります。

左側のメニューのコードは次のとおりです。

- (IBAction)leftActionLongPress:(UILongPressGestureRecognizer*)recognizer
{
// On a long press, show popup menu with selections to reset the number to
// zero or not

[self.leftActionNameNumber canBecomeFirstResponder];

// Check if the number is not a zero
if ([self.leftActionNameNumber.text isEqualToString:@"0"]) {
    // Equal to zero so don't show the popup menu
    return;
} else {
    // Number is not a zero, show popup menu
    UIMenuItem* resetMenu =
        [[UIMenuItem alloc] initWithTitle:@"Reset to 0"
                                   action:@selector(resetLeftToZero)];
    UIMenuItem* cancelMenu =
        [[UIMenuItem alloc] initWithTitle:@"Cancel"
                                   action:@selector(leaveNumberAsIs)];

    UIMenuController* menu = [UIMenuController sharedMenuController];
    [menu setMenuItems:[NSArray arrayWithObjects:resetMenu, cancelMenu, nil]];
    [menu setTargetRect:self.leftActionNameNumber.frame inView:self.view];
    [menu setMenuVisible:YES animated:YES];
}

右側のメニューのコードは次のとおりです。

- (IBAction)rightActionLongPress:(UILongPressGestureRecognizer*)recognizer
{
// On a long press, show popup menu with selections to reset the number to
// zero or not

[self.rightActionNameNumber canBecomeFirstResponder];


// Check if the number is not a zero
if ([self.rightActionNameNumber.text isEqualToString:@"0"]) {
    // Equal to zero so don't show the popup menu
    return;
} else {
    // Number is not a zero, show popup menu
    UIMenuItem* resetMenu =
        [[UIMenuItem alloc] initWithTitle:@"Reset to 0"
                                   action:@selector(resetRightToZero)];
    UIMenuItem* cancelMenu =
        [[UIMenuItem alloc] initWithTitle:@"Cancel"
                                   action:@selector(leaveNumberAsIs)];

    UIMenuController* menu = [UIMenuController sharedMenuController];
    [menu setMenuItems:[NSArray arrayWithObjects:resetMenu, cancelMenu, nil]];
    [menu setTargetRect:self.rightActionNameNumber.frame inView:self.view];
    [menu setMenuVisible:YES animated:YES];

}

カットオフ メニューを含む UIMenuItem を表示している画像

4

0 に答える 0