【发布时间】:2015-09-09 16:18:35
【问题描述】:
没有深入了解这一切的“原因”,我有 UITextField,它是视图层次结构的一部分,它通过仿射变换在屏幕上强制“倒置”。
CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(180))
这适用于所有子视图——包括 UITextField——直到用户想要在文本字段内容上使用 UIMenuController 的复制/粘贴功能。当 UIMenuController 显示时,它是“正面朝上”而不是像 UITextField 那样“倒置”。
是否有把握 UIMenuController 的视图在显示时应用相同的转换?
目前,我正在监听 UIMenuControllerWillShowMenuNotification 通知,然后获取 UIMenuController。但我似乎找不到将转换应用于它的方法。有任何想法吗?
- (void)textFieldDidBeginEditing:(UITextField *)textField {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuControllerWillShow:) name:UIMenuControllerWillShowMenuNotification object:nil];
}
- (void)menuControllerWillShow:(NSNotification*)aNotification {
UIMenuController* menuController = [UIMenuController sharedMenuController];
CGAffineTransform xform = CGAffineTransformMakeRotation(DEGREES_TO_RADIANS(180));
CGRect oldRect = menuController.menuFrame;
CGRect newRect = CGRectApplyAffineTransform(oldRect, xform);
// eh... now what?
}
【问题讨论】:
-
应用中有多少是颠倒的?整个事情还是只是
UITextField? -
几乎是整个事情。该设备始终保持纵向,但由于围绕麦克风位置的各种应用程序要求,我的顶部根视图控制器旋转了(基于用户偏好)180 度。我找到了转换 UIAlertViews、键盘等的方法(当根视图控制器和所有子视图倒置时)。但无法破解 UIMenuController。
标签: ios uimenucontroller