我有这个代码将一个26 x 30 .png文件添加到UITextField的右视图中.
//add button to address bar
//UIButton *refreshButton = [UIButton buttonWithType:UIButtonTypeInfoDark];
UIButton *refreshButton = [UIButton buttonWithType:UIButtonTypeCustom];
[refreshButton setImage:[UIImage imageNamed:@"refresh.png"] forState:UIControlStateNormal];
[refreshButton setImage:[UIImage imageNamed:@"refresh.png"] forState:UIControlStateHighlighted];
refreshButton.imageEdgeInsets = UIEdgeInsetsMake(0, -16, 0, 0);
[refreshButton addTarget:self action:@selector(refresh) forControlEvents:UIControlEventTouchUpInside];
addressBar.rightView = refreshButton;
addressBar.rightViewMode = UITextFieldViewModeUnlessEditing;
Run Code Online (Sandbox Code Playgroud)
按钮是可触摸的,并调用它应该的方法,但不显示图像.
有任何想法吗?可能是图像对于文本字段来说太大了吗?我的文字字段是我从IB拖入的标准尺寸,所以我不认为是这样,但这是一个想法.
文本字段为245 x 31
我正在我的iphone应用程序中执行HTTP Post,并且我发送到服务器的其中一个参数是URL.问题是,当我从NSURL转换为NSURLRequest时,字符串http://www.slashdot.org变为http:/www.slashdot.org(缺少正斜杠之一)
有没有解决的办法?
这是我正在使用的代码:
NSString *host = @"example.host.com";
NSString *urlString = [NSString stringWithFormat:@"/SetLeaderUrl.json?leader_email=%@&url=%@",localEmail,urlToPublish];
NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:host path:urlString];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *jsonString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
Run Code Online (Sandbox Code Playgroud)
我已经使用NSLog来查看它丢失'/'的位置,它位于第四行:
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
Run Code Online (Sandbox Code Playgroud)
感谢您抽出宝贵时间阅读!
我有一个问题,在我现场直播我的屏幕后,然后我尝试录制屏幕,但它不起作用.当我录制我的屏幕然后我尝试直播屏幕时,会发生同样的事情.我不是试图一起做它们.这是在一个完成后我尝试使用另一个.如果您需要查看代码或更多信息,请与我们联系.我在Swift 3中并使用新的重放工具包框架.谢谢!
编辑:这是我使用的代码
//LIVE STREAM REPLAYKIT=====================================================================
func broadcastActivityViewController(_ broadcastAVC: RPBroadcastActivityViewController, didFinishWith broadcastController: RPBroadcastController?, error: Error?) {
print("=====hello delegate \(broadcastController?.broadcastURL) (error)")
self.broadcastController = broadcastController
self.broadcastController?.delegate = self
broadcastAVC.dismiss(animated: true) {
self.broadcastController?.startBroadcast(handler: { error in
print("start broadcast \(error)")
print("\(broadcastController?.broadcastExtensionBundleID)")
print("==url=\(broadcastController?.broadcastURL)")
print("==serviceInfo=\(broadcastController?.serviceInfo)")
//This is called when the broadcast is live
})
}
}
func broadcastController(_ broadcastController: RPBroadcastController, didFinishWithError error: Error?) {
print("broadcastController====delegate")
let alert = UIAlertController(title: "Alert", message: "There was an error broadcasting your screen. Please try again", preferredStyle: UIAlertControllerStyle.alert)
// show the …Run Code Online (Sandbox Code Playgroud) 我正试图检测我的UIWebView中何时完成任何ajax调用.我在这个答案中修改了代码:JavaScript尽我最大的能力检测AJAX事件.这是我的尝试:
var s_ajaxListener = new Object();
s_ajaxListener.tempOnReadyStateChange = XMLHttpRequest.prototype.onreadystatechange;
s_ajaxListener.callback = function () {
window.location='ajaxHandler://' + this.url;
};
XMLHttpRequest.prototype.onreadystatechange = function() {
alert("onreadystatechange called");
s_ajaxListener.tempOnReadyStateChange.apply(this, arguments);
if(s_ajaxListener.readyState == 4 && s_ajaxListener.status == 200) {
s_ajaxListener.callback();
}
}
Run Code Online (Sandbox Code Playgroud)
我正在将其注入webView,但警报从未触发.如果我在脚本的开头或结尾放置一个警报,它会触发,所以我很确定没有语法错误.
我不是一个JS人,所以我希望这是一个微不足道的问题.
这是我正在使用的代码,它验证了我提供的99%的URL,但是当URL中的IP地址后面有一个":port"时它会失败.
-(BOOL) validateUrl: (NSString *) candidate {
//NSString *urlRegEx=@"(http|https)://(((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+)|(";
NSString *urlRegEx = @"^(http|https|ftp)\://(([a-zA-Z0-9-.]+\.[a-zA-Z]{2,3})|([0-2]*\d*\d\.[0-2]*\d*\d\.[0-2]*\d*\d\.[0-2]*\d*\d))(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9-._\?\,\'/\+&%\$#\=~])*[^.\,)(\s]$";
NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx];
return [urlTest evaluateWithObject:candidate];
Run Code Online (Sandbox Code Playgroud)
}
谢谢您的帮助!
我正在编写UITableView的子类,我希望我的子类在将它们传递给"真正的"委托之前处理一些UITableViewDelegate方法,并转发我的子类未实现的所有UITableViewDelegate方法.
在子类中,我有一个私有财产:
@property (nonatomic, assign) id <UITableViewDelegate> trueDelegate;
Run Code Online (Sandbox Code Playgroud)
它拥有所有未实现的方法应该转发的"真正的代表".在我设置的两个init方法中
self.delegate = self;
Run Code Online (Sandbox Code Playgroud)
我覆盖 - (void)setDelegate:(id)就像这样
-(void)setDelegate:(id<UITableViewDelegate>)delegate {
if (delegate != self) {
_trueDelegate = delegate;
} else {
[super setDelegate:self];
}
}
Run Code Online (Sandbox Code Playgroud)
然后我重写这些来处理消息转发
-(NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
NSMethodSignature *sig;
sig = [[self.delegate class] instanceMethodSignatureForSelector:aSelector];
if (sig == nil) {
sig = [NSMethodSignature signatureWithObjCTypes:"@^v^c"];
}
return sig;
}
- (void)forwardInvocation:(NSInvocation *)anInvocation {
SEL selector = anInvocation.selector;
if ([self respondsToSelector:selector]) {
[anInvocation invokeWithTarget:self];
} else {
[anInvocation invokeWithTarget:_trueDelegate];
}
}
Run Code Online (Sandbox Code Playgroud)
问题是未实现的委托方法永远不会在tableview上调用,因此它们没有机会被转发到_trueDelegate对象.
我试着在这里检查它们:
- …Run Code Online (Sandbox Code Playgroud) 我正在使用这里找到的JSON框架:http://stig.github.com/json-framework在我的iPhone应用程序中.我正在尝试将一些数据解析为NSArray(顺序很重要,因此字典不起作用)
我从服务器获得了JSON字符串,这就是它的样子:
{"users":["example1@examle.com","example2@example.com","example3@example.com"]}
Run Code Online (Sandbox Code Playgroud)
我想最终得到的是NSArray,以便:
myArray[0] == "example1@example.com"
myArray[1] == "example2@example.com"
myArray[3] == "example3@example.com"
Run Code Online (Sandbox Code Playgroud)
这应该很简单,但对我而言,我能得到的最接近的是这个输出:
( "example1@example.com", "example2@example.com", "example3@example.com")
从这段代码
NSDictionary *dictionary = [jsonString JSONValue];
for(NSString *key in dictionary){
NSLog(@"Dictionary value for \"%@\" is \"%@\"",key, [dictionary objectForKey:key]);
}
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
我正在尝试复制Mobile Safari工具栏的外观.如您所知,普通工具栏太短,所以我改变了它:
[topToolbar setFrame:CGRectMake(0.0, 0.0, 320.0, 57.0)];
Run Code Online (Sandbox Code Playgroud)
这使得它和我需要的一样宽,但是......现在我的UITextField正好位于中间,而不是像在Mobile Safari中那样位于底部:

VS.

我已经尝试过感觉像一百万件事情(改变框架,插图......)并且没有任何作用.有任何想法吗?
我担心我必须链接到用户所在国家/地区的App Store.我怎么能自动这样做?
例如,我从Apple获得的链接是这样的:
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=99999999999&mt=8
Run Code Online (Sandbox Code Playgroud)
它打开iTunes但无法加载应用程序.他们说它需要24小时才能到达那里.这是我可以给任何人的链接,无论是来自美国,印度,澳大利亚还是荷兰?我很困惑,因为有时谷歌会把我扔给像这样的网址:
http://itunes.apple.com/us/app/id308928075?mt=8
Run Code Online (Sandbox Code Playgroud)
这些URL在Web浏览器中显示应用程序描述,显然它们已本地化.这个是给我们的,但您可以输入/ us /的任何国家/地区代码以查看特殊说明.
因此,链接到第一个非常长的URL(itunes.apple.com/WebObjects/MZStore ...)是否智能,或者更好地链接到在线应用程序描述的美国页面?
所以当我按下三个按钮之一时,我会调用一个方法:
- (IBAction)saveNetwork:(id)sender
{
NSString *networkEntered;
if (sender == button1)
networkEntered = @"button1";
if (sender == button2)
networkEntered = @"button2";
if (sender == button3)
networkEntered == @"button3";
//more work...
}
Run Code Online (Sandbox Code Playgroud)
问题是,无论发送者传入什么内容,它都不会击中第三个.我已经尝试了其他如果是,否则等等......
有什么想法发生了什么?
问题不在于我是如何传递按钮对象或类似的东西,因为如果它是按下的按钮1,它进入if就好了,但由于某种原因它根本不会检查最后一个.
提前感谢阅读和帮助.
iphone ×7
objective-c ×7
xcode ×6
cocoa-touch ×3
ajax ×1
app-store ×1
cocoa ×1
if-statement ×1
ios ×1
javascript ×1
replaykit ×1
swift ×1
uiwebview ×1
url ×1