アプリには、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];
}