UIAlertView中的UITextField在第二次显示时不响应剪切/复制/粘贴

时间:2010-03-11 20:20:54

标签: iphone uitextview uialertview

编辑重新发布...我不小心将上一个问题标记为“commuity wiki”,并没有意识到维基帖的答案不会产生声誉。

我正在使用以下代码将UITextView添加到UIAlertView:

 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Enter Name Here" message:@"this gets covered!" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:@"OK!", nil];
 UITextField *myTextField = [[UITextField alloc] initWithFrame:CGRectMake(12, 45, 260, 25)];
 CGAffineTransform myTransform = CGAffineTransformMakeTranslation(0, 60);
 [alert setTransform:myTransform];
 [myTextField setBackgroundColor:[UIColor whiteColor]];
 [alert addSubview:myTextField];
 [alert show];
 [alert release];
 [myTextField release];

如果我将该代码放在标准操作方法中:

 - (IBAction)testAlertView:(id)sender {
  ...the above code...
 }

然后第一次显示UIAlertView时,剪切/复制/粘贴弹出菜单将显示在已添加到UIAlertView的UITextField中。 (例如,如果我点击并按住,则在我释放后将弹出“粘贴”。

问题是第一次正常工作后,下次显示UIAlertView(新实例)时,没有任何剪切/复制/粘贴按钮会再次出现,除非我重新启动应用程序。有谁知道为什么,或者如何解决这个问题?

奖励信息

我刚刚发现,如果我在UIActionSheet delagate回调中创建一个显示警报,我可以让事情始终有效。例如,这总是有效的(在适当的时候,在UITextField中总是显示剪切/复制/粘贴)

 - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
  ...the above code...
 }

更新了奖励信息

事实证明它首次显示剪切/复制/粘贴popu ...而不仅仅是第一次显示UIAlertView。例如,我可以多次显示和关闭警报视图。并且剪切/复制/粘贴在第一次显示时仍然有效。但在此之后它将不再起作用。

另外......如果我添加一个UITextField(不在警报视图中)并在那里显示剪切/复制/粘贴,那么它将不会在警报视图中的UITextField中显示(甚至是第一次)。所以最后问题似乎是切割/复制/粘贴只显示在UIAlertView中的UITextField中,如果它在任何UITextField中第一次显示编辑弹出窗口。

知道在第二种情况下会发生什么事情会让事情发生变化吗?我不想在我的应用程序中使用UIActionSheet,因此我想找到一种方法,使其能够使用普通的旧操作方法。

谢谢, 杰西

1 个答案:

答案 0 :(得分:0)

说实话,我认为这个想法违反了UI准则......除非你有充分的理由,否则这将构成对应用商店的拒绝。

这是Apples定义的使用UIAlertView

http://developer.apple.com/library/ios/documentation/userexperience/conceptual/mobilehig/UIElementGuidelines/UIElementGuidelines.html#//apple_ref/doc/uid/TP40006556-CH13-SW8

老实说,我认为你只是想切换到另一种观点......

抱歉,我无法提供更多帮助。