Documentation Index
Fetch the complete documentation index at: https://mintlify.com/rive-app/rive-ios/llms.txt
Use this file to discover all available pages before exploring further.
Overview
RiveSMITrigger represents a trigger input in a Rive state machine. Triggers are one-time events that can cause state transitions when fired.
Unlike boolean and number inputs which maintain state, triggers are momentary - they fire once and automatically reset.
Inherits from RiveSMIInput.
Methods
fire
Fires the trigger, causing any associated state transitions to occur.
The trigger automatically resets after being fired.
Usage Example
Basic Usage
// Get a trigger input from the state machine
RiveSMITrigger* clickTrigger = (RiveSMITrigger*)[stateMachine inputFromName:@"click"];
// Fire the trigger
[clickTrigger fire];
// Connect a button tap to a Rive trigger
- (IBAction)buttonTapped:(UIButton*)sender {
RiveSMITrigger* buttonTrigger = (RiveSMITrigger*)[stateMachine inputFromName:@"onButtonTap"];
[buttonTrigger fire];
}
Multiple Triggers
// Initialize Rive view and get state machine
RiveStateMachineInstance* stateMachine = [riveView stateMachine:@"State Machine 1"];
// Get trigger inputs
RiveSMITrigger* startTrigger = (RiveSMITrigger*)[stateMachine inputFromName:@"start"];
RiveSMITrigger* stopTrigger = (RiveSMITrigger*)[stateMachine inputFromName:@"stop"];
RiveSMITrigger* resetTrigger = (RiveSMITrigger*)[stateMachine inputFromName:@"reset"];
// Fire triggers based on events
[startTrigger fire]; // Start animation
// Later...
[stopTrigger fire]; // Stop animation
// Later...
[resetTrigger fire]; // Reset to initial state
Gesture Recognition
// Fire trigger on swipe gesture
- (void)handleSwipeGesture:(UISwipeGestureRecognizer*)gesture {
RiveSMITrigger* swipeTrigger;
if (gesture.direction == UISwipeGestureRecognizerDirectionLeft) {
swipeTrigger = (RiveSMITrigger*)[stateMachine inputFromName:@"swipeLeft"];
} else if (gesture.direction == UISwipeGestureRecognizerDirectionRight) {
swipeTrigger = (RiveSMITrigger*)[stateMachine inputFromName:@"swipeRight"];
}
[swipeTrigger fire];
}
Game Events
// Fire triggers based on game events
RiveSMITrigger* collectCoin = (RiveSMITrigger*)[stateMachine inputFromName:@"collectCoin"];
RiveSMITrigger* levelComplete = (RiveSMITrigger*)[stateMachine inputFromName:@"levelComplete"];
RiveSMITrigger* gameOver = (RiveSMITrigger*)[stateMachine inputFromName:@"gameOver"];
// When player collects a coin
[collectCoin fire];
// When level is completed
[levelComplete fire];
// When game ends
[gameOver fire];
Type Checking
You can verify an input is a trigger before casting:
RiveSMIInput* input = [stateMachine inputFromName:@"myInput"];
if ([input isTrigger]) {
RiveSMITrigger* trigger = (RiveSMITrigger*)input;
[trigger fire];
}
Trigger vs Boolean
Use triggers for one-time events and booleans for persistent state:
// Trigger - fires once
RiveSMITrigger* explosionTrigger = (RiveSMITrigger*)[stateMachine inputFromName:@"explode"];
[explosionTrigger fire]; // Plays explosion animation once
// Boolean - maintains state
RiveSMIBool* isExploded = (RiveSMIBool*)[stateMachine inputFromName:@"isExploded"];
[isExploded setValue:true]; // Keeps object in exploded state
See Also