小编Tom*_*ing的帖子

以编程方式在iOS 6中打开地图应用

在iOS 6之前,打开这样的URL会打开(Google)地图应用:

NSURL *url = [NSURL URLWithString:@"http://maps.google.com/?q=New+York"];
[[UIApplication sharedApplication] openURL:url];
Run Code Online (Sandbox Code Playgroud)

现在有了新的Apple Maps实现,这只会将Mobile Safari打开到Google Maps.如何在iOS 6中实现相同的行为?如何以编程方式打开地图应用并将其指向特定位置/地址/搜索/其他?

objective-c mapkit ios ios6

159
推荐指数
5
解决办法
10万
查看次数

iOS 7.1中的UIProgressView自定义跟踪和进度图像

iOS 7.1似乎破坏了自定义图像属性UIProgressView.用于成功自定义进度视图的代码现在生成默认外观.

我设置了一个示例项目viewDidLoad:

self.progressView.frame = CGRectMake(self.progressView.frame.origin.x, self.progressView.frame.origin.y, self.progressView.frame.size.width, 9);
UIImage *img = [UIImage imageNamed:@"progress_bar_fill.png"];
img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 4)];
self.progressView.progressImage = img;

img = [UIImage imageNamed:@"progress_bar_empty.png"];
img = [img resizableImageWithCapInsets:UIEdgeInsetsMake(0, 4, 0, 4)];
self.progressView.trackImage = img;
Run Code Online (Sandbox Code Playgroud)

我仍然得到默认的外观.我已经介入并验证了img预期的非零值.这是怎么回事?

更新:有一个OpenRadar,我还提交了一个我自己的雷达完成了一个示例项目.

更新2:如下面的Axy所述,你必须添加它以使JEProgressView正常工作:

_progressBar.tintColor = [UIColor clearColor];
Run Code Online (Sandbox Code Playgroud)

uiprogressview ios ios7

50
推荐指数
2
解决办法
3万
查看次数

从WKWebView中的本机代码调用JavaScript函数

在iOS 8中使用WKWebView,如何从本机端运行JavaScript函数或以其他方式从本机端到JavaScript进行通信?似乎没有类似于UIWebView的方法stringByEvaluatingJavaScriptFromString:.

(我可以- addScriptMessageHandler:name:configuration.userContentController对象上使用以允许从JS到本地的通信,但我正在寻找相反的方向.)

javascript webkit ios wkwebview

46
推荐指数
3
解决办法
5万
查看次数

Outlook 2010覆盖从Arial到Times New Roman的字体系列

我是以编程方式发送HTML格式的电子邮件,并将字体设置为Arial(font-family: Arial;).当邮件到达Outlook 2010时,table元素中的文本位于Times New Roman中.div元素中的文字在Arial中很好.如果我View Source,复制到HTML文件,并在浏览器中查看,所有字体按预期运行(它都是Arial).

一些谷歌搜索结果显示,当没有指定时,Outlook将回归到默认字体(Times New Roman),但这不是这里发生的事情.

为什么Outlook强制我的电子邮件在Times New Roman中以其他方式显示?

outlook html-email

44
推荐指数
4
解决办法
6万
查看次数

WKWebView中的文本选择:WKSelectionGranularityCharacter

我有一个使用Web视图的应用程序,可以选择文本.长期以来,您无法在UIWebView中跨块边界选择文本,这一直是一个烦恼.WKWebView似乎通过其配置上的属性解决了这个问题:selectionGranularity.其中一个可能的值是WKSelectionGranularityCharacter:

选择端点可以放置在任何字符边界.

听起来很棒!正是我需要的.除了当我在网络视图中设置它时,我经常无法再选择文本.到底是怎么回事?还有其他我需要设置的东西吗?有没有人想到这个?

更新:我发现了以下错误:

  1. 当应用程序中有多个WKWebView selectionGranularity设置为时WKSelectionGranularityCharacter,只有最新加载的WKWebView 可以选择文本.我已将此作为错误18441138提交.

  2. 如果有一个单击处理程序附加到bodyWKWebView的HTML内容中的一个元素,该元素selectionGranularity设置为WKSelectionGranularityCharacter,则文本选择在该元素内部不起作用.我已将此归档为错误18440833.

  3. 在您在应用程序中的其他位置的UITextView上进入编辑模式之后,WKWebView中的文本选择失败,直到WKWebView重新加载.我已将此归档为错误18468405.

有没有人解决过这些问题?

textselection ios wkwebview

39
推荐指数
1
解决办法
3300
查看次数

WKWebView和NSURLProtocol无法正常工作

使用旧的UIWebView时,您可以通过实现自定义NSURLProtocol来捕获请求.我这是为了处理需要身份验证的请求.

我尝试了相同的代码,它不适用于新的WKWebView,但我的协议类根本没有被调用.有人遇到同样的问题,还是有更好的方法来使用WKWebView进行身份验证?

在没有任何修改的情况下,我在decisionPolicyForNavigationResponse委托函数中获得了401响应.我还尝试使用NSURLConnection连接到服务器并使用NSURLConnectionDataDelegate处理身份验证.这可行,但WKWebView不会获取存储的凭据.

uiwebview ios swift ios8 wkwebview

36
推荐指数
1
解决办法
2万
查看次数

我怎么知道我的iOS应用程序的蜂窝访问是否被禁用?

我有一个iOS应用程序,在应用程序启动(资源更新等)上发出一些小的网络请求.如果用户在iOS设置中关闭应用程序的蜂窝访问权限,则每次启动时都会从iOS获得有关网络使用情况的提示.有没有办法以编程方式知道此应用程序的蜂窝数据已被禁用,以便我可以在启动时禁用请求?

networking cellular-network ios

16
推荐指数
3
解决办法
4750
查看次数

单击时从通知中心删除通知

是否可以在单击一个推送通知时从通知中心删除推送通知并启动应用程序?

大多数应用似乎都会留下通知.我读到另一个问题:

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; 
Run Code Online (Sandbox Code Playgroud)

可能会工作,但它不适合我.

一旦点击,Facebook应用程序肯定会删除推送通知.

notifications apple-push-notifications ios notificationcenter

15
推荐指数
1
解决办法
2万
查看次数

在iPad上的popover中推送导航视图控制器时动画popoverContentsize

当包含的UINavigationController推送新控制器时,如何让我的UIPopoverController动画显示其大小?

我在我的iPad应用程序中UIPopover显示了一个UIBarButtonItem.它包含一个UINavigationViewController,它有一种设置窗口作为其根视图控制器.设置窗口是UITableViewController(样式设置为分组)的子类,并且点击其任何单元格会推动导航控制器上也是子类的不同"选择器"视图控制器UITableViewController.

对于每个选择器视图viewDidAppear,我正在contentSizeForViewInPopover适当地设置:

self.contentSizeForViewInPopover = CGSizeMake(320, self.items.count * 44);
Run Code Online (Sandbox Code Playgroud)

但它没有动画变化; 导航动画完成后,弹出窗口将捕捉到新的高度(宽度永远不会从320更改).向后导航可以调整大小变化(使用此答案中的技术完成),但前进永远不会.

我已经尝试获取它所使用的popover的引用setPopoverContentSize:animated:但是它不起作用.我看了其他 问题无济于事.

如何让它始终为尺寸变化设置正确的动画?

更新:我已经设置了一个简单的测试项目来试试这个.这是在Xcode中设置iPad的标签栏应用程序.我在其中一个视图控制器的导航栏中添加了一个标签栏项.按下该按钮时,控制器会显示一个包含导航控制器的弹出框,该控制器具有一个非常简单的UITableViewController子类,称为TestContentViewController其根视图控制器.

viewDidLoad该子类中,我随机生成了许多项:

self.numItems = arc4random() % 10 + 3;
Run Code Online (Sandbox Code Playgroud)

这是我的行数; 部分的数量是1.在cellForRowAtIndexPath我只是设置单元格的标签文本并返回它.当选择一行时,我生成同一个类的另一个实例并将其推送到堆栈上.

在没有contentSizeForViewInPopover对任何VC 的属性做任何事情的情况下,无论我的表视图中有多少行,弹出窗口都会达到其最大高度并保持在那里.

如果我在viewDidAppear中设置大小,如下所示:

-(void)viewDidAppear:(BOOL)animated
{
  self.contentSizeForViewInPopover = CGSizeMake(320, self.numItems * 44);
  [super viewDidAppear:animated];
{
Run Code Online (Sandbox Code Playgroud)
  • 当弹出窗口首次出现时,它会快速闪烁到全高,然后按下我设置的高度.
  • 当在导航控制器上按下新控制器时,它会捕捉到没有动画的高度.
  • 当我向后导航时,如果我弹出的VC比我弹出的VC高,它会动画到正确的大小.如果我弹出的东西更小,它什么都不做.

如果我做同样的事情,但在viewWillAppear:

  • 弹出窗口首次出现时,它是全高的
  • 当我第一次点击一行并在堆栈上获得一个新控制器时,它会动画到最低约400px高.当一个新的控制器被推入堆栈时,如果它需要更多的高度,它就会得到它.如果没有,它会保持原状.

如果我做同样的事情viewDidLoad …

uitableview ipad uipopovercontroller ios

15
推荐指数
1
解决办法
2958
查看次数

是否有必要在iOS上启动时验证/刷新应用商店收据?

收据验证的Apple文档表示在发布后立即执行收据验证.这相当于检查返回路径中的数据,如果不存在则[[NSBundle mainBundle] appStoreRecieptURL]刷新SKReceiptRefreshRequest,并验证它.上述文档引用了iOS和macOS.

它在iOS上真的有必要吗?如果是这样,为什么?是阻止用户在越狱设备上使用我的应用程序,还是没有从应用程序商店购买它(在这种情况下,我可能不关心我的应用程序是免费的)?或者它是否会对恢复或验证应用内购买等其他操作产生影响?例如,收据数据是否已经存在以验证应用内购买的交易?

注意:我没有使用应用内订阅.我有应用内购买,但在验证并记录购买服务器端后,我不使用它们的收据.

app-store ios receipt-validation

15
推荐指数
1
解决办法
3103
查看次数