2009-05-18 5 views
4

に応答していません:UIActionSheet私はこのように設定することを私がUIActionSheetを有するタッチ

-(void)trash:(id)sender 
{ 
UIActionSheet *sheet = [[[UIActionSheet alloc] initWithTitle:@"Delete" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Remove text" otherButtonTitles:@"Remove tags", nil] autorelease]; 

[sheet showInView:self.view]; 

}

シートが意図したように、画面の下から現れ、すべて正しいです。ただし、いずれのボタンもアクティブではありません。唯一の方法は、[ホーム]ボタンをタッチすることです。

紛失しているものがありますか?

view self.viewはView Controllerのビューです。奇妙な点は、キーボードの上にあるため、画面全体の高さよりも小さいことです。

// Never called 
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex; 
{ 
    NSLog(@"%d",buttonIndex); 
} 

// Never called 
- (void)actionSheet:(UIActionSheet *)actionSheet  didDismissWithButtonIndex:(NSInteger)buttonInde 
{ 

} 

// Never called 
- (void)actionSheet:(UIActionSheet *)actionSheet  willDismissWithButtonIndex:(NSInteger)buttonIndex 
{ 

} 

// Called if I hit Home button 
- (void)actionSheetCancel:(UIActionSheet *)actionSheet 
{ 

} 


// Called second 
- (void)didPresentActionSheet:(UIActionSheet *)actionSheet 
{ 

} 

// Called first 
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet 
{ 

} 
+2

IはAppDelegateでこのメソッドを有する [シートshowInView:self.view.window]。 完全に動作します。 –

+0

私もこれを経験しました。ウィンドウに表示することはうまくいくので、これは私が使ってきた方法です。 – rpetrich

答えて

0

firstResponderのステータスを再確認してください。

1

ビューにキーボードがある場合、キーボードが表示されているtextfield/textviewが最初のレスポンダです。すべてのコントロールが接触に反応するためには、最初の応答者でなければなりません。

アクションシートが最初の応答者であることを確認してください。

0

あなたのビューをself.vewではなくAppelegateのルートビューで表示する必要があります。

[appDelegate.window.subviews objectAtIndex:0]を使用します。

-(UIView *) getRootView { 
return [self.window.subviews objectAtIndex:0]; 

}興味深いことに、私はこれを行う場合

関連する問題