我有一个touchesBegan方法设置为在用户触摸屏幕时拾取坐标.它很有效,除非我触摸UIButton.如何使按钮触发touchesBegan方法呢?
所以我有一个应用程序播放一堆歌曲,而用户可以浏览漫画书.我使用AVAudioPlayer,我将它设置为按设定顺序播放歌曲.所以当一首歌结束时,下一首歌将播出.当应用程序打开时,这可以完美运行.当应用程序在后台时出现问题.我将应用程序设置为在后台播放,并且工作正常.因此,当用户按下主屏幕时,音乐继续播放.当歌曲结束时会出现问题,假设播放应用程序打开时播放下一首歌曲.相反没有任何反应 根据我的NSLog语句,正在调用正确的方法,但没有任何反应.这是我的代码:
- (void)audioPlayerDidFinishPlaying: (AVAudioPlayer *)player successfully: (BOOL) flag {
NSLog(@"Song finished");
if ([songSelect isEqualToString: @"01icecapades"]) {
isPlay = @"yes";
songSelect = @"02sugarcube";
imageSelect = @"playbanner02";
[self performSelector:@selector(triggerSong) withObject:nil afterDelay:0];
[self performSelector:@selector(triggerBanner) withObject:nil afterDelay:0];
}
else if ([songSelect isEqualToString: @"02sugarcube"]) {
isPlay = @"yes";
songSelect = @"03bullets";
imageSelect = @"playbanner03";
[self performSelector:@selector(triggerSong) withObject:nil afterDelay:0];
[self performSelector:@selector(triggerBanner) withObject:nil afterDelay:0];
}
else if ([songSelect isEqualToString: @"03bullets"]) {
isPlay = @"yes";
songSelect = @"04satanama";
imageSelect = @"playbanner04";
[self performSelector:@selector(triggerSong) withObject:nil afterDelay:0];
[self performSelector:@selector(triggerBanner) …Run Code Online (Sandbox Code Playgroud) NSString *timerend = [[NSString alloc] initWithFormat:@"%.0f:%.0f:%02d", hours, minutes, seconds];
Run Code Online (Sandbox Code Playgroud)
所以我有这个字符串和一堆浮点数.例如,假设秒= 6.54.它将显示为.我希望它显示为06.54.反正有吗?非常感谢任何帮助.
所以我有两个观点.启动应用程序时会加载一个视图.然后,当我按下该视图上的按钮时,它会加载另一个视图.
- (IBAction)triggerGame
{
leveldata = [[NSMutableDictionary alloc] init];
[leveldata setValue:@"hide" forKey:@"shootarrow"];
[leveldata writeToFile:[self levelFilePath] atomically:YES];
[leveldata release];
Papertoss_MaraAppDelegate *mainDelegate = (Papertoss_MaraAppDelegate *)[[UIApplication sharedApplication] delegate];
[mainDelegate playGame];
}
Run Code Online (Sandbox Code Playgroud)
此操作在委托实现中触发一个名为playGame的方法,如下所示:
- (void)playGame {
[levelView.view removeFromSuperview];
[self.window addSubview:[gameView view]];
[UIView commitAnimations];
}
Run Code Online (Sandbox Code Playgroud)
这样可以很好地加载新视图.然后我有另一个按钮做同样的事情,但它让我回到第一个视图.而且它也很棒.我能够非常轻松地从一个视图导航到另一个视图.但我唯一的问题是,当我第二次尝试加载第二个视图时,不会再次调用viewDidLoad.我通过在viewDidLoad方法中使用NSLog()来测试它.
为了我的应用程序做我想要的,我需要再次调用viewDidLoad.我猜我在他们之间切换时可能没有完全卸载我的视图.
任何帮助是极大的赞赏.
我一直在阅读文档寻找答案.我看到AudioKit可以在录制或播放时实时绘制波形,但我想知道你是否可以加载文件并完全绘制波形,这样我就可以看到整个文件的波形而无需回放.
任何帮助将不胜感激.甚至只是指向我应该查看的对象的指针.
所以我一直在寻找,我还没有找到我想要的东西.
我有一个视图,然后是该视图的子视图.在第二个视图中,我根据我给它的坐标创建CALayers.我想能够触摸任何这些CALayers并触发一些东西.
我发现了不同的代码片段,看起来可以提供帮助,但我无法实现它们.
例如:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { if ([touches count] == 1) { for (UITouch *touch in touches) {
CGPoint point = [touch locationInView:[touch view]]; point = [[touch view] convertPoint:point toView:nil];
CALayer *layer = [(CALayer *)self.view.layer.presentationLayer hitTest:point];
layer = layer.modelLayer; layer.opacity = 0.5;
} } }
Run Code Online (Sandbox Code Playgroud)
还有......
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
// If the touch was in the placardView, bounce it back to the center
if ([touch view] == placardView) { …Run Code Online (Sandbox Code Playgroud) 我正在 Swift 5 和 iOS 上工作。我正在尝试将文本覆盖到我当前拥有的 PDF 上。我本质上是在移植从 macOS 应用程序编写的代码。这是Mac版本的代码:
func executeContext(at srcURL: URL, to dstURL: URL) {
// Confirm there is a document there
if let doc: PDFDocument = PDFDocument(url: srcURL) {
// Create a document, get the first page, and set the size of the page
let page: PDFPage = doc.page(at: 0)!
var mediaBox: CGRect = CGRect(x: 0, y: 0, width: 792, height: 612)
// This is where the magic happens. Create the drawing context on the PDF …Run Code Online (Sandbox Code Playgroud) ios ×5
ipad ×3
iphone ×3
swift ×2
audiokit ×1
background ×1
calayer ×1
cocoa-touch ×1
objective-c ×1
pdfkit ×1
swift5 ×1
touch ×1
uikit ×1
viewdidload ×1
views ×1
waveform ×1