Lui*_*uiz 0 twitter modalviewcontroller ios5
在我的应用程序中,我有一个操作表,其中一个按钮以模态方式打开TWTweetComposeViewController.在iPhone模拟器上,推特作曲家的取消按钮工作正常,并解散视图.但是,在iPad模拟器上,取消按钮不起作用,并且推特作曲家视图仍保留在屏幕上.它甚至更奇怪,因为在按下取消按钮后,键盘缩回并且底层视图变为活动状态.它表现得好像视图已经被解散但它仍然存在.
用户按下操作按钮时使用的代码是:
-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
NSString *buttonTitle = [actionSheet buttonTitleAtIndex:buttonIndex];
if ([buttonTitle isEqualToString:@"Open in Safari"]){
[[UIApplication sharedApplication] openURL:[self.webView.request URL]];
}else if ([buttonTitle isEqualToString:@"Twitter"]){
if ([TWTweetComposeViewController canSendTweet]){
TWTweetComposeViewController *tweetSheet = [[TWTweetComposeViewController alloc] init];
[tweetSheet addURL:[self.webView.request URL]];
tweetSheet.completionHandler = ^(TWTweetComposeViewControllerResult result){
if (result == TWTweetComposeViewControllerResultCancelled){
[self dismissModalViewControllerAnimated:YES];
}
};
[self presentModalViewController:tweetSheet animated:YES];
}else {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Twitter error" message:@"You can't send a tweet right now, make sure your device has an internet connection and you have at least one Twitter account setup" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}
}
Run Code Online (Sandbox Code Playgroud)
你对如何解决这个问题有任何想法,还是模拟器的错误?
PS:我的应用程序是一个标签栏应用程序,此代码从标签栏的一个视图控制器调用.
我在实际设备上遇到同样的问题.事实证明这是Apple的SDK中的一个错误TWTweetComposeViewController.
请参阅OpenRadar上的错误报告:http://openradar.appspot.com/radar?id = 1484405 .
当completionHandler块添加到TWTweetComposeViewController,完成处理器需要调用 - [UIViewController中dismissModalViewControllerAnimated:],即使为鸣叫作曲家视图驳回本身与它取消或发送按钮.如果不这样做,会导致触摸事件无法到达产生推文编写器的视图.
只是想我会添加我正在做的事情,即使这没有正确遵循内存指南,这是一个解决方法:
[compose setCompletionHandler:^(TWTweetComposeViewControllerResult result){
dispatch_async(dispatch_get_main_queue(), ^{
if(self.delegate != nil)
{
if (result == TWTweetComposeViewControllerResultDone)
{
[self.delegate twitterOperation:TETwitterOperationTweet
completedSuccessfully:YES
withResponseString:@"Tweet Successful"];
}
else if(result == TWTweetComposeViewControllerResultCancelled)
{
[self.delegate twitterOperation:TETwitterOperationTweet
completedSuccessfully:NO
withResponseString:@"Tweet Cancelled"];
}
}
// Dismiss per Apple's Twitter example
[self.shownInViewController dismissViewControllerAnimated:YES
completion:nil];
// Yuck. But it's necessary.
[compose release];
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1316 次 |
| 最近记录: |