小编Lan*_*nce的帖子

UITextField中的图像右视图未出现

我有这个代码将一个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 xcode objective-c

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

从NSURL转换为NSURLRequest时丢失/

我正在我的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)

感谢您抽出宝贵时间阅读!

iphone cocoa-touch objective-c

10
推荐指数
1
解决办法
6835
查看次数

replaykit是否允许录制屏幕然后广播屏幕?

我有一个问题,在我现场直播我的屏幕后,然后我尝试录制屏幕,但它不起作用.当我录制我的屏幕然后我尝试直播屏幕时,会发生同样的事情.我不是试图一起做它们.这是在一个完成后我尝试使用另一个.如果您需要查看代码或更多信息,请与我们联系.我在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)

xcode swift replaykit

10
推荐指数
1
解决办法
1584
查看次数

未调用onreadystatechange的XMLHttpRequest原型

我正试图检测我的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人,所以我希望这是一个微不足道的问题.

javascript ajax uiwebview

7
推荐指数
1
解决办法
2368
查看次数

在目标c中使用端口的url的正则表达式

这是我正在使用的代码,它验证了我提供的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)

}

谢谢您的帮助!

iphone url xcode objective-c

6
推荐指数
1
解决办法
1801
查看次数

共享UITableViewDelegate

我正在编写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)

cocoa cocoa-touch objective-c ios

6
推荐指数
1
解决办法
932
查看次数

从JSON到NSArray

我正在使用这里找到的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)

任何帮助,将不胜感激!

iphone xcode cocoa-touch objective-c

5
推荐指数
1
解决办法
4477
查看次数

在UIToolBar中垂直移动UIBarButtonItems

我正在尝试复制Mobile Safari工具栏的外观.如您所知,普通工具栏太短,所以我改变了它:

[topToolbar setFrame:CGRectMake(0.0, 0.0, 320.0, 57.0)];
Run Code Online (Sandbox Code Playgroud)

这使得它和我需要的一样宽,但是......现在我的UITextField正好位于中间,而不是像在Mobile Safari中那样位于底部:

我的应用程序

VS.

移动Safari

我已经尝试过感觉像一百万件事情(改变框架,插图......)并且没有任何作用.有任何想法吗?

iphone xcode objective-c mobile-safari

3
推荐指数
1
解决办法
2508
查看次数

如何正确设置App Store链接?

我担心我必须链接到用户所在国家/地区的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 ...)是否智能,或者更好地链接到在线应用程序描述的美国页面?

iphone app-store

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

为什么我的if语句被跳过了?

所以当我按下三个按钮之一时,我会调用一个方法:

- (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 xcode if-statement objective-c

0
推荐指数
1
解决办法
197
查看次数