UIActionSheet,如何通过单击解雇它? 我必须单击一个按钮2次以便它被解雇,我应该怎么做才能让它在第一次点击后被解雇?!这是我的代码:
-(void)buttonHeld:(id)sender
{
UIActionSheet *popupQuery = [[UIActionSheet alloc] initWithTitle:@"Delete Contact?!" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete" otherButtonTitles: nil];
popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[popupQuery showInView:self.view];
[popupQuery release];
}
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0) {
NSLog(@"Delete button clicked Button Clicked");
else if (buttonIndex == 1) {
NSLog(@"Cancel Button Clicked");
}
}
答案 0 :(得分:4)
根据您的方法“buttonHeld”的名称,我的假设是您尝试从UILongPressGestureRecognizer启动UIActionSheet。如果希望它按预期工作,则需要使用下面列出的代码。问题源于UILongPressGestureRecognizer是一个“连续手势”,它会多次触发并进入几个不同的状态。您需要监视正确的状态,然后加载UIActionSheet。我有完全相同的问题,这就是为我解决的问题。
- (IBAction) buttonHeld:(UILongPressGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateBegan) {
UIActionSheet *popupQuery = [[UIActionSheet alloc]
initWithTitle:@"Delete Contact?!"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:@"Delete"
otherButtonTitles:nil];
popupQuery.actionSheetStyle = UIActionSheetStyleBlackOpaque;
[popupQuery showInView:self.view];
}
}
答案 1 :(得分:3)
这就是我如何解雇动作表......
[actionSheet dismissWithClickedButtonIndex:0 animated:YES];
希望这有帮助
答案 2 :(得分:0)
当您分配动作表时,无需在此委托中声明您已取消取消按钮默认情况下将ActionSheet忽略为此类
[[UIActionSheet alloc] initWithTitle:@"" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:btnTitle,@"Send for a date range",nil];
来自任何其他事件,您可以使用此方法
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
在你的代码中,如果是阻塞,则会出现语法错误。
答案 3 :(得分:0)
我花了几下才取消它。问题最终是我附加的视图。
[action showInView:self.view];
self.view仅在IB中引用。我将其更改为不同的视图并且有效。
答案 4 :(得分:0)
如果你正在开发iphone,它总是安全的使用:
[popupQuery showFromBarButtonItem:sender animated:YES]
或showFromTabBar:或showFromToolBar等,而不是showinView。