我是Swift的新手并试图弄清楚它是如何工作的。我的警报表有问题。在iPhone 5S工作正常(它打开工作表,然后Facebook和Twitter警报)但我收到错误:"启动服务:invalidationHandler调用"。
在iPad Air 2上,使用我的代码,警报会打开,但其位置(和箭头)不在shareACtion按钮旁边,而是实际位于屏幕的另一侧。此外,它没有采取任何行动
我导入了社交框架和UIActionSheetDelegate
感谢名单
@IBAction func shareAction(sender: AnyObject) {
let actionSheet = UIActionSheet(title: nil, delegate: self, cancelButtonTitle: "OK", destructiveButtonTitle: nil,otherButtonTitles: "Twitter", "Facebook")
actionSheet.showInView(self.view)
}
func actionSheet(actionSheet: UIActionSheet!, clickedButtonAtIndex buttonIndex: Int)
{
switch buttonIndex{
//Twitter
case 1:
SLComposeViewController.isAvailableForServiceType(SLServiceTypeTwitter)
var tweetSheet:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)
tweetSheet.setInitialText("I'm using the app Test")
tweetSheet.addImage(UIImage(named: "picture1.png"))
self.presentViewController(tweetSheet, animated: true, completion: nil)
break;
//Facebook
case 2:
SLComposeViewController.isAvailableForServiceType(SLServiceTypeFacebook)
var FBSheet:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
FBSheet.setInitialText("I'm using the app Test")
FBSheet.addImage(UIImage(named: "picture1.png"))
self.presentViewController(FBSheet, animated: true, completion: nil)
break;
default:
break;
}
}
答案 0 :(得分:0)
来自UIActionSheet.showInView(_:)
在iPad上,此方法将操作表置于中间位置 屏幕。通常,如果要在iPad中显示操作表 应用程序,您应该使用showFromRect:inView:animated:方法 改为显示行动表。
来自UIActionSheet.showFromRect(_, inView:, animated:)
在iPad上,此方法在弹出窗口中显示操作表 箭头指向视图的指定矩形。 popover呢 不与指定的矩形重叠。
在您的代码中,您传递的是一个0,0原点和0,0大小的矩形。我打赌你的行动表出现在左上角。相反,传入您希望工作表指向的视图的框架(假设视图附加到主视图。)如果视图附加到某个子视图,那么您还必须更改要传递的视图
文档是你的朋友。