没有进入'为什么'这一切,我有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?
}