gpt4 book ai didi

iphone - UIActionSheet 不显示——屏幕只是变暗

转载 作者:行者123 更新时间:2023-12-03 19:16:13 24 4
gpt4 key购买 nike

我有一个 iPhone 应用程序,它基于“基于窗口的应用程序”模板,并使用带有一些嵌入 subview 的主视图。

对于某些操作,我需要用户的确认。因此,我创建了一个 UIActionSheet 并询问用户反馈。

问题是,操作表根本不显示。相反,屏幕会变暗。工作表和请求的按钮不显示。之后,应用程序将挂起。屏幕变暗是正常行为,作为通常显示操作表的动画的一部分。

奇怪的是,如果在 viewDidLoad 方法中调用,相同的代码可以正常工作。如果在启动需要确认的操作的buttonPressed 方法中调用,它不起作用。

- (void) trashButtonPressed {
// This method is called in the button handler and (for testing
// purposes) in the viewDidLoad method.
NSLog( @"trashButtonPressed" );

UIActionSheet* actionSheet =
[[UIActionSheet alloc] initWithTitle: @"Test"
delegate: self
cancelButtonTitle: @"Cancel"
destructiveButtonTitle: @"Delete Sheet"
otherButtonTitles: nil];

[actionSheet showInView: self.view];
[actionSheet release];
}

- (void) willPresentActionSheet:(UIActionSheet *) actionSheet {
NSLog( @"willPresentActionSheet" );
}

- (void) didPresentActionSheet:(UIActionSheet *) actionSheet {
NSLog( @"didPresentActionSheet" );
}

- (void) actionSheet:(UIActionSheet *)actionSheet
didDismissWithButtonIndex:(NSInteger)buttonIndex {
NSLog( @"actionSheet:didDismissWithButtonIndex" );
}

如您所见,我已将一些日志消息添加到 UIActionSheetDelegateProtocol 的协议(protocol)处理程序中。 “将呈现”和“确实呈现”方法按预期调用,但工作表未显示。

有人知道这里出了什么问题吗?

最佳答案

我想知道 [actionSheet showInView: self.view];是否足以让actionSheet本身被self.view保留。 (编辑:保留计数从 1 跳到 4,所以这里不是问题)

您检查过 View 的尺寸吗?该工作表位于 View 内,但如果 self.view 引用一个大 ScrollView ,则您可能只是在表面下方有一个工作表。简而言之,您确定 self.view.frame 和 self.view.bounds 在您所指的两种情况下具有相同的值吗?它是相同的 View 吗(当只是 NSLog(@"%x",self.view)-ing 它的地址时)?

编辑以澄清:执行

NSLog(@"%f %f %f %f",
self.view.frame.origin.x,self.view.frame.origin.y,
self.view.frame.size.width,self.view.frame.size.height);

请告诉我你在控制台上看到了什么。如果我设置 0,0,0,0 帧或 0,0,320,800 帧,我会得到你的“屏幕变得更暗”,所以这可能是......

关于iphone - UIActionSheet 不显示——屏幕只是变暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3380277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com